У меня есть окно с двумя флажками, привязанными к свойствам класса Параметры:
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, поэтому я не могу объяснить, почему это работает.Есть идеи?