如何在进行组合框选择时设置文本框的属性。选择组合框时,示例设置文本框的背景和IsEnabled属性。我想要它纯粹在XAML中而不是代码背后。我使用MVVM
答案 0 :(得分:0)
如何在SelectedItems为1
时启用textBox1<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="IsEnabled" Value="False"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=comboBox1, Path=SelectedIndex}" Value="1">
<Setter Property="Background" Value="Green"></Setter>
<Setter Property="IsEnabled" Value="True"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />
我认为只有XAML才能达到条件Value =“1”或“3”,即数据触发器中的关系比相等更复杂。
对于这种情况,您需要一个转换器。 这个链接可以帮到你
How to get DataTemplate.DataTrigger to check for greater than or less than?
答案 1 :(得分:0)
您可以将数据触发器用于组合的选定对象。看看上一个问题:WPF Visibility of a UI element based on combo selection
当selecteditem为{x:Null}
时,尝试生成触发器。为此,您需要将控件放在DataTemplate中,并将触发器放在模板的触发器集合中。
以下是示例代码(未经测试,请自行查看):
<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" IsEnabled" Value="True" />
<ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" />
<DataTemplate.Triggers>
<Trigger SourceName="comboBox1" Property="ComboBox.SelectedItem" Value="{x:Null}">
<Setter TargetName="textbox2" Property="TextBox.IsEnabled" Value="False" />
</Trigger>
</DataTemplate.Triggers>