Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否在WPF中为每个绑定实例化了值转换器?_Wpf_Binding_Valueconverter - Fatal编程技术网

是否在WPF中为每个绑定实例化了值转换器?

是否在WPF中为每个绑定实例化了值转换器?,wpf,binding,valueconverter,Wpf,Binding,Valueconverter,是否为使用特定值转换器类的每个绑定实例化了单独的WPF值转换器对象 我正在尝试创建一个双向位到布尔值转换器。我希望能够将bool属性(例如IsChecked)绑定到值类型中的位(例如ushort)。我使用转换器的参数参数指定位。实现ConvertBack()方法很容易,但Convert()有点棘手 在Convert()中,我需要知道整个ushort的值,这样我就可以只切换我感兴趣的单个位。我想在我的值转换器类中使用一个成员变量,以便在调用ConvertBack()时临时存储该变量,从而导致上面

是否为使用特定值转换器类的每个绑定实例化了单独的WPF值转换器对象


我正在尝试创建一个双向位到布尔值转换器。我希望能够将
bool
属性(例如
IsChecked
)绑定到值类型中的位(例如
ushort
)。我使用转换器的
参数
参数指定位。实现ConvertBack()方法很容易,但Convert()有点棘手


在Convert()中,我需要知道整个
ushort
的值,这样我就可以只切换我感兴趣的单个位。我想在我的值转换器类中使用一个成员变量,以便在调用ConvertBack()时临时存储该变量,从而导致上面的问题:每个绑定是否都有自己的值转换器实例?

在转换器中创建一个构造函数和析构函数,并在其中设置断点以确定是否正确。我刚刚创建了一个简单的示例,它似乎只为使用构造函数的多个viewmodels创建了一个转换器

如果您使用在资源中定义的转换器,它将在您的属性之间共享


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

我也这样做了,并且得到了相同的结果——很明显,当我在XAML中将一个转换器声明为单个静态资源时,只会实例化一个转换器。有人能澄清这个答案吗。有些地方有一些打字错误,这让人非常困惑。“如果你需要唯一的转换器:如果你为一个属性创建了一个特定的转换器,它将不会被共享。”这没有任何意义。少了点什么,不是吗?谢谢。@NVM:不。您可以为特定的依赖属性创建转换器的说明。在这种情况下,它不会在其他属性之间共享。如果您使用资源,并按键引用转换器,它将被共享。谢谢。我终于明白了这个句子。英语不是我的母语:)。我认为,如果您删除下面的“如果您需要唯一的转换器”,会更加清楚:“我已经尝试使用具有不同键的相同转换器类型的多个资源,但它们仍然是相同的实例。似乎不可能创建不同的实例。