我正在使用 MVVM 模式,并且我的视图的数据上下文有一个属性 Customer。现在我想根据 Customer.CustomerID 属性的值绑定我的文本框的 IsEnabled 属性。如果它大于 0 则应该启用否则禁用。
我知道我可以轻松地在视图模型中添加一个 bool 属性并将其绑定到我的文本框的 IsEnabled 属性,但这似乎是一种矫枉过正。
我正在使用 MVVM 模式,并且我的视图的数据上下文有一个属性 Customer。现在我想根据 Customer.CustomerID 属性的值绑定我的文本框的 IsEnabled 属性。如果它大于 0 则应该启用否则禁用。
我知道我可以轻松地在视图模型中添加一个 bool 属性并将其绑定到我的文本框的 IsEnabled 属性,但这似乎是一种矫枉过正。
有几种选择。
首先,您可以使用DataTrigger
<TextBox>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Customer.CustomerID}" Value="0" >
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
<TextBox>
请注意,DataTrigger 的设置器中的值只能覆盖样式设置器中设置的值。如果您直接设置该值,则触发器将不起作用。
原因是Dependency Property Value Precedence。
DataTrigger
仅适用于相等条件,因此如果您还需要检查负数,请使用第二个选项 -值转换器