【发布时间】:2011-12-20 14:07:38
【问题描述】:
...所以我有 2 个元素,我希望复选框的 IsChecked 属性将绑定到我的 我的类对象中的“IsAlwaysOn”属性(双向),以及元素组合框选定的值属性,如果值为“输入”,则 IsChecked 为假, 有什么想法吗?
【问题讨论】:
...所以我有 2 个元素,我希望复选框的 IsChecked 属性将绑定到我的 我的类对象中的“IsAlwaysOn”属性(双向),以及元素组合框选定的值属性,如果值为“输入”,则 IsChecked 为假, 有什么想法吗?
【问题讨论】:
您可以使用 DataTrigger 执行此操作,但我不推荐它,因为 CheckBox 的值不会总是保存到 MyClass.IsAlwaysOn
<Style x:Key="MyCheckBoxStyle" TargetType="{x:Type CheckBox}">
<Setter Property="IsChecked" Value="{Binding IsAlwaysOn}" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyComboBox, Path=SelectedValue}" Value="Enter">
<Setter Property="IsChecked" Value="False" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style>
相反,我建议在MyClass 的PropertyChange 通知中处理此问题。为了防止更改,我会在MyClass 中包含一个属性,该属性确定 CheckBox 是否可以更改,或者在上面的触发器中禁用 CheckBox。
void MyClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "SelectedComboBoxItem")
{
if (SelectedComboBoxItem == "Enter")
{
IsAlwaysOn = false;
CanChangeCheckBox = false;
}
else
{
CanChangeCheckBox = true;
}
}
}
【讨论】: