我在UserControl中有一个复选框:
<CheckBox Content="Existing" IsChecked="{Binding Path=IsExistingTemplate, Mode=TwoWay}"/>
它绑定到具有Property IsExistingTemplate的DataContext,它始终返回False。 (在我的实际应用程序中,它并不总是返回False!)。 DataContext实现了INotifyPropertyChanged。
公共布尔? IsExistingTemplate { 得到 { 返回false; } 组 { OnPropertyChanged( “IsExistingTemplate”) } }
当用户单击CheckBox时,CheckBox始终显示勾号。
当用户点击它时,如何强制CheckBox不显示勾号?
答案 0 :(得分:0)
我记得有一个非常类似的问题,但我无法找到解决问题的地点和方式。我认为问题是由WPF如何更新绑定引起的,我认为我在某处读到可以通过使用IValueConverter来解决它只是传递值,但我已经测试了它并且它似乎没有工作。它应该工作,因为使用转换器应该重新评估绑定。
您可以随时处理CheckBox上的Clicked事件并通过代码更新值,但它感觉很脏。对不起我无法提供更多帮助
<StackPanel.Resources>
<local:PassThroughConverter x:Key="PassThroughConverter" />
</StackPanel.Resources>
<CheckBox IsChecked="{Binding IsExistingTemplate, Converter={StaticResource PassThroughConverter}}" Content="Stuff"/>
public class PassThroughConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}