2010-01-14 71 views
4

是为特定值转换器类在每个绑定中实例化的单独的WPF值转换器对象吗?值转换器是否在WPF中通过绑定实例化?


我想创建一个双向位到布尔值转换器。我想能够在一个值类型(如ushort)一个bool属性(如IsChecked)绑定到一个比特。我使用转换器的parameter参数来指定该位。实现ConvertBack()方法非常简单,但Convert()并不麻烦。

In Convert()我需要知道整个ushort的值是什么,所以我可以切换我感兴趣的单个位。我想在我的值转换器类中使用成员变量来临时存储无论何时调用ConvertBack(),都会导致上述问题:每个绑定是否都有自己的值转换器实例?

回答

4

,我多的ViewModels创建的,它会之间的属性共享。

如果您需要独特的转换器: 如果您为属性创建一个特定的转换器,但是,它不会被共享。任一选项都可行。您甚至可以在资源中使用多个转换器(相同类型,不同的键),这将创建独特的实例。

+1

有人可以澄清这个答案。有些地方会出现一些错字,这使得这很容易混淆。 – NVM 2011-02-28 09:43:27

+0

@NVM:你在这里感到困惑吗?我很乐意澄清...... – 2011-02-28 13:58:07

+0

“如果您需要独特的转换器:但是,如果您为某个属性创建了特定的转换器,它将不会被共享。”这没有任何意义。有什么想念不是吗?谢谢。 – NVM 2011-02-28 14:09:50

2

创建你的转换器一个构造函数和析构函数,并设置内肯定告诉断点。我刚刚创建了一个简单的例子,它看起来像只有一个转换器是为如果您在使用你的资源定义的转换器中使用构造

+0

我也这样做,并有同样的结果 - 很明显,当我宣布这是我的XAML单一静态资源只有一转换器将被实例化。 – 2010-01-14 21:19:09