gpt4 book ai didi

c# - 在XAML中将CollectionViewSource与CompositeCollection结合使用

转载 作者:行者123 更新时间:2023-12-03 11:02:39 25 4
gpt4 key购买 nike

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

通常,我会为此任务使用CompositeCollection(like this),因为我不想在ViewModel或代码隐藏(.xaml.cs)中处理此类事情。

以下是相关的代码段:

<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元素时,必须将 SelectedFooItem设置为null。

最佳答案

试试这个

        <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>

检查这项工作。我现在没有时间构建测试环境,如果在应用程序中尝试它肯定会更快。

关于c# - 在XAML中将CollectionViewSource与CompositeCollection结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49169427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com