绑定属性始终返回false但仍检查WPF绑定的CheckBox

时间:2009-09-29 10:45:08

标签: wpf data-binding checkbox

我在UserControl中有一个复选框:

  

<CheckBox Content="Existing" IsChecked="{Binding Path=IsExistingTemplate, Mode=TwoWay}"/>
  

它绑定到具有Property IsExistingTemplate的DataContext,它始终返回False。 (在我的实际应用程序中,它并不总是返回False!)。 DataContext实现了INotifyPropertyChanged。

  公共布尔? IsExistingTemplate          {            得到              {                返回false;              }            组              {                OnPropertyChanged( “IsExistingTemplate”)              }          }

当用户单击CheckBox时,CheckBox始终显示勾号。

当用户点击它时,如何强制CheckBox不显示勾号?

1 个答案:

答案 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;
    }
}