是否在WPF中为每个绑定实例化了值转换器?
是否为使用特定值转换器类的每个绑定实例化了单独的WPF值转换器对象是否在WPF中为每个绑定实例化了值转换器?,wpf,binding,valueconverter,Wpf,Binding,Valueconverter,是否为使用特定值转换器类的每个绑定实例化了单独的WPF值转换器对象 我正在尝试创建一个双向位到布尔值转换器。我希望能够将bool属性(例如IsChecked)绑定到值类型中的位(例如ushort)。我使用转换器的参数参数指定位。实现ConvertBack()方法很容易,但Convert()有点棘手 在Convert()中,我需要知道整个ushort的值,这样我就可以只切换我感兴趣的单个位。我想在我的值转换器类中使用一个成员变量,以便在调用ConvertBack()时临时存储该变量,从而导致上面
我正在尝试创建一个双向位到布尔值转换器。我希望能够将
bool
属性(例如IsChecked
)绑定到值类型中的位(例如ushort
)。我使用转换器的参数参数指定位。实现ConvertBack()方法很容易,但Convert()有点棘手
在Convert()中,我需要知道整个ushort
的值,这样我就可以只切换我感兴趣的单个位。我想在我的值转换器类中使用一个成员变量,以便在调用ConvertBack()时临时存储该变量,从而导致上面的问题:每个绑定是否都有自己的值转换器实例?在转换器中创建一个构造函数和析构函数,并在其中设置断点以确定是否正确。我刚刚创建了一个简单的示例,它似乎只为使用构造函数的多个viewmodels创建了一个转换器如果您使用在资源中定义的转换器,它将在您的属性之间共享
如果您需要独特的转换器:
但是,如果为属性创建特定的转换器,它将不会被共享。这两种选择都是可行的。您甚至可以在您的资源中使用多个转换器(相同类型,具有不同的键),这将创建唯一的实例。我也这样做了,并且得到了相同的结果——很明显,当我在XAML中将一个转换器声明为单个静态资源时,只会实例化一个转换器。有人能澄清这个答案吗。有些地方有一些打字错误,这让人非常困惑。“如果你需要唯一的转换器:如果你为一个属性创建了一个特定的转换器,它将不会被共享。”这没有任何意义。少了点什么,不是吗?谢谢。@NVM:不。您可以为特定的依赖属性创建转换器的说明。在这种情况下,它不会在其他属性之间共享。如果您使用资源,并按键引用转换器,它将被共享。谢谢。我终于明白了这个句子。英语不是我的母语:)。我认为,如果您删除下面的“如果您需要唯一的转换器”,会更加清楚:“我已经尝试使用具有不同键的相同转换器类型的多个资源,但它们仍然是相同的实例。似乎不可能创建不同的实例。