在XAML

时间:2018-03-08 09:18:04

标签: c# wpf mvvm combobox

我的CollectionViewSource有一个ComboBox。现在我想添加一个空元素'或者“空元素”'到集合。要使用该功能,请取消选择当前选择。

通常情况下,我会使用CompositeCollection执行此任务(like this),因为我不想在我的ViewModel或代码隐藏中处理此类事件({{1} })。

以下是相关的代码段:

.xaml.cs

对此有什么好的解决方案吗?

编辑选择此null元素时,<UserControl.Resources> <CollectionViewSource x:Key="FooItemsCollection" Source="{Binding FooItems}"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="Name" /> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </UserControl.Resources> <ComboBox SelectedItem="{Binding SelectedFooItem, Mode=TwoWay}" ItemsSource="{Binding Source={StaticResource FooItemsCollection}}" IsSynchronizedWithCurrentItem="False" DisplayMemberPath="Name" /> 必须设置为null。

1 个答案:

答案 0 :(得分:2)

试试这个

        <ComboBox SelectedItem="{Binding SelectedFooItem, Mode=TwoWay}" 
  IsSynchronizedWithCurrentItem="False"
  DisplayMemberPath="Name" >
            <ComboBox.ItemsSource>
                    <CompositeCollection>
                        <CollectionContainer Collection="{Binding Source={StaticResource FooItemsCollection}}" />
                        <ComboBoxItem>
                            <TextBlock Content="NotAFoo"></Button>
                        </ComboBoxItem>
                    </CompositeCollection>
            </ComboBox.ItemsSource>
            <ComboBox.Style>
                <Style TargetType="{x:Type ComboBox}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=SelectedItem.Content}" Value="NotAFoo">
                            <Setter Property="SelectedItem" Value="{x:Null}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ComboBox.Style>
        </ComboBox>

检查这是否有效。我现在没有时间构建测试环境,如果您在应用中尝试它,肯定会更快。