如何有条件地将数据绑定(bind)到组合框?我有一个组合框,默认情况下应显示一个 ID。但是,如果用户选中一个复选框,则显示应该同时显示 ID 和 NAME。例如,“OO1:山姆”。我有正确显示的默认 ID。我只是不确定如何根据复选框的“IsChecked”状态同时显示 ID 和 NAME。
WPF 和 C#.Net 3.5
最佳答案
这是一种方法,在 ComboBox 上使用带有触发器的样式来动态设置 ItemTemplate:
编辑:将样式更改为资源。请注意,这仍然使用元素绑定(bind)直接绑定(bind)到 CheckBox - 如果您希望它更灵活,您可以将 CheckBox 的 IsChecked 属性绑定(bind)到 ViewModel 的属性并依赖于更改而不是 IsChecked。
让我们将样式移动到窗口的资源部分:
<Window.Resources>
<Style x:Key="myStyle" TargetType="ComboBox">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,ElementName=chk}" Value="True">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ID}" />
<TextBlock Text=": " />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
现在我们定义 CheckBox 和几个依赖它的 ComboBox:
<CheckBox x:Name="chk" Content="Click Me" />
<ComboBox ItemsSource="{Binding}" Style="{StaticResource myStyle}" />
<ComboBox ItemsSource="{Binding}" Style="{StaticResource myStyle}" />
关于c# - 如何有条件地绑定(bind)数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028174/