默认值转换器用于绑定。

4

有没有一种方法可以让WPF自动将Converter应用于特定类型的所有绑定?

我看到了这个问题,但它涵盖了不同的情况(本地化),因此没有令人满意的答案。

我的问题:我有包含Commands的模型类,我想将它们绑定到WPF Commands。由于模型类与工具包无关,因此我无法在那里实现WPF的ICommand。相反,我有一个CommandConverter,它将CommandModel包装成WPF的ICommand

<Button Command="{Binding MyCommand, Converter={StaticResource CommandConverter}}" />

这个方案很好,但容易忘记 Converter=,而且WPF没有任何提示绑定失败的迹象。
我的问题是:有没有可能强制WPF始终将转换器应用于特定类型的绑定?或者,当命令绑定失败时,如何让WPF给我正确的错误提示?
3个回答

2
我认为你不能不子类化Button(你可能不想这样做),或者定义自己的附加属性并在其上使用TypeConverter特性来实现。如果你想通过在新的附加属性上使用TypeConverter特性来使用默认转换器,你可以查看Rob Relyea的信息文章(这里)或MSDN(这里)

从第一篇帖子来看,似乎没有必要将该属性设置为附加属性。无论如何,我会尝试并回报的! - David Schmitt
实际上,TypeConverters 似乎只用于将(XAML)字符串转换为实际属性值。遗憾。 - David Schmitt

2
虽然我从未这样做过,但是否有可能定义一个自定义的Markup Extension?这应该会导致值被发送到实现Markup Extension的类中,然后您可以从那里返回一个ICommand,这是Command属性所期望的。
正如我所说,我从未创建过自定义的Markup Extension,但谷歌搜索似乎会提供一些关于如何执行此操作的文章。

有趣的想法。尽管这只是把问题从记得使用转换器变成了记得使用自定义标记扩展。 - David Schmitt
1
是的,但希望标记扩展的语法比您上面发布的更小 - 即使没有其他收益,也是一种小小的进步。 - Andy

0

检查调试输出窗口。通常在那里可以看到绑定错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接