当Checkbox值更改时,更改WPF ComboBox上的数据绑定

Sco*_*ott 2 data-binding wpf

我有一个WPF ComboBox,它是一个数据绑定到一个集合,但取决于是否检查Checkbox我不想改变ComboBox绑定的集合.

基本问题是我有一大堆MyCustomer,我也有MyCustomer的过滤集合 - 过滤是非常密集的,我不想用CollectionView做,主要原因是它已经完成,过滤了集合已经存在 - 因此需要简单地切换组合的数据绑定.

我希望有一个纯XAML解决方案,显然,编写一些代码背后会是一个相对简单的解决方案,但它并不觉得它应该是必需的.

Rob*_*nee 5

以下是使用DataTrigger切换集合的示例:

<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:sys="clr-namespace:System;assembly=mscorlib"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel.Resources>
        <x:Array x:Key="notes" Type="{x:Type sys:String}">
            <sys:String>do</sys:String>
            <sys:String>re</sys:String>
            <sys:String>mi</sys:String>
        </x:Array>
        <x:Array x:Key="letters" Type="{x:Type sys:Char}">
            <sys:Char>a</sys:Char>
            <sys:Char>b</sys:Char>
            <sys:Char>c</sys:Char>
        </x:Array>
    </StackPanel.Resources>

    <CheckBox x:Name="chkLetters" Content="Use Letters"/>
    <ListBox>
        <ListBox.Style>
            <Style TargetType="{x:Type ListBox}">
                <Setter Property="ItemsSource" Value="{StaticResource notes}"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=chkLetters}" Value="True">
                        <Setter Property="ItemsSource" Value="{StaticResource letters}"/>
                    </DataTrigger>
                 </Style.Triggers>
            </Style>
        </ListBox.Style>
    </ListBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

对于你来说,这些不是不同的数组,但可能是不同的CollectionViewSources与过滤器或其他东西,但原理是相同的.