这是在MVVM项目中。我在另一个UserControl
中有一个WPF UserControl
,如下所示:
<UserControl x:Class="MyProject.ParentUserControl" ...>
<local:ChildUserControl DataContext="{Binding ChildViewModel}" IsEnabled="{Binding ChildViewModel, Converter={StaticResource n2bf}}" />
</UserControl>
我的n2bf
资源是我的NullToBooleanConverter
,如果False
方法Convert
为value
,则返回null
。调试显示转换器正常工作。
但是,当我运行程序时,ChildUserControl
实例已启用。我使用了Snoop工具,令我惊讶的是它显示IsEnabled
属性在本地设置为True
!
我在所有情况下都将Convert
方法更改为返回false
,但UserControl仍然在运行时启用。但是,当我将我的XAML更改为此时,它可以正常工作:
<local:ChildUserControl DataContext="{Binding ChildViewModel}" IsEnabled="False" />
那么为什么我的Converter中的False
值被忽略而IsEnabled
属性设置为True
?