我的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。
答案 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>
检查这是否有效。我现在没有时间构建测试环境,如果您在应用中尝试它,肯定会更快。