c# - 如何有条件地绑定(bind)数据?

标签 c# wpf conditional-binding

如何有条件地将数据绑定(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/

相关文章:

parameters - Ninject 2.0 的上下文绑定(bind)

javascript - 如何用 selenium 重新加载 html DOM,以便新命令定位新节点?

c# - 即使asp中的文本框为空,如何阻止数据添加到数据库中?

c# - Linq ForEach 与 AddRange 和包含并选择

c# - 动态添加标签到 DevExpress DXTabControl WPF, MVVM

wpf - 无法在 WPF 中设置动画后的属性

c# - 在 XAML 中设置 <Window.DataContext>

c# - 仅当属性不为 null 时才进行条件依赖注入(inject)绑定(bind)

parameters - ninject 2.0 中基于参数的绑定(bind)

c# - Asp.Net MVC 6 Cookie 身份验证 - 授权失败