我有一个窗口,其中有两个复选框绑定到类Options的属性:
public class Options
{
public bool Option1 { get; set; }
public bool Option2 { get; set; }
public bool AnotherOption { get; set; }
}
XAML:
<CheckBox
Content="Option #1"
IsChecked="{Binding Path=Option1}"/>
<CheckBox
Content="Option #2"
IsChecked="{Binding Path=Option2}"/>
此外,我还有第三个复选框,当取消选中其他两个复选框时,应禁用该复选框。为实现这一点,我使用了多重绑定:
<CheckBox
IsChecked="{Binding Path=AnotherOption}"
Content="Another option">
<CheckBox.IsEnabled>
<MultiBinding Converter="{StaticResource MultiValueLogicalOrConverter}">
<Binding Path="Option1"/>
<Binding Path="Option2"/>
</MultiBinding>
</CheckBox.IsEnabled>
</CheckBox>
转换器:
public class MultiValueLogicalOrConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.Cast<bool>().Any(value => value);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
这似乎工作正常。但有时候有人指出Option的属性不是依赖属性而且不会触发PropertyChanged事件,所以我无法解释为什么会这样。有什么想法吗?
答案 0 :(得分:1)
如果您不需要视图来关心模型,那么使用INotify接口就没有意义了。但是,如果由于任何原因模型的属性发生更改,您需要在视图中了解它。
答案 1 :(得分:0)
使用GUI中的绑定更新模型时,绑定会重新加载模型以获取结果值。