选择组合框时设置文本框的属性 WPF XAML
Posted
技术标签:
【中文标题】选择组合框时设置文本框的属性 WPF XAML【英文标题】:Set properties of text box when combobox selection is made WPF XAML 【发布时间】:2012-05-15 21:46:40 【问题描述】:如何在制作组合选择时设置文本框的属性。 foe 示例在进行组合框选择时设置文本框的背景和 IsEnabled 属性。我希望它纯粹在 XAML 中,而不是在后面的代码中。我使用 MVVM
【问题讨论】:
这个问题类似于:***.com/questions/2561820/… 【参考方案1】:您可以为组合的选定对象使用数据触发器。看看这个之前的问题: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>
【讨论】:
我们可以这样做吗如何仅在 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 无法达到条件值 =“1”或“3”,即数据触发器中的关系比相等更复杂。
对于这种情况,您需要一个转换器。 这个链接可以帮助你
How to get DataTemplate.DataTrigger to check for greater than or less than?
【讨论】:
如何在数据触发器中有两个或多个条件,或者为属性指定多个值,例如以上是关于选择组合框时设置文本框的属性 WPF XAML的主要内容,如果未能解决你的问题,请参考以下文章
DataGrid 数据绑定/更新中的 WPF 组合框不起作用