我正在使用MVVM模式,我的视图的datacontext有一个属性Customer。现在我想根据Customer.CustomerID属性的值绑定我的文本框的IsEnabled属性。如果它大于0则应该启用else disable。
我知道我可以在视图模型中轻松添加bool属性并将其绑定到我的文本框的IsEnabled属性,但这似乎是一种矫枉过正。
答案 0 :(得分:10)
有几种选择。
首先,您可以使用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的setter的值只能覆盖样式设置器中设置的值。如果直接设置该值,则触发器将不起作用 原因是Dependency Property Value Precedence。
DataTrigger
仅适用于相等条件,因此如果您需要检查负数,那么请使用第二个选项 - Value Converter