gpt4 book ai didi

c# - 如何合并集合中的两个源并在组合框中正确显示它们?

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

我有一些让我生气的 XAML 代码。首先是为未引用的值添加一个虚拟项目。

为此,我必须实现 CollectionViewSourceCompositeCollection .
现在我无法选择第一个 Combobox 项,它出现但我无法选择它,因为我设置了 DisplayMemberPath在 XAML 中(我猜是这样)。此外,分隔符看起来不像预期的那样。

让我演示给你看:

screenshot

如果我不设置 XAML DisplayMemberPath ,我可以使用虚拟项目,但绑定(bind)的项目显示不正确:

screenshot

XAML:

<ComboBox x:Name="G_cb_content_zuordnung" 
Margin="165,0,0,0"
Grid.Row="1"
SelectedIndex="0"
VerticalAlignment="Top"
DisplayMemberPath="PartnerID"
HorizontalAlignment="Left"
Width="119">
<ComboBox.Resources>
<CollectionViewSource x:Key="ComboCollection" Source="{Binding Path=mySelectedItem.Stammkinder}" />
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="Ohne Stammnummer" Name="NoPID" />
<Separator />
<CollectionContainer Collection="{Binding Source={StaticResource ComboCollection}, Mode=OneWay}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>

我所需要的只是一个虚拟/占位符组合框项目,它显示在 ObservableCollection<myClass> 的顶部.难道我的思维方式不对?有更聪明的解决方案吗?我在我的解决方案中遗漏了什么吗?

最佳答案

使用第二种方法并定义 DataTemplate明确的项目,而不是使用 DisplayMemberPath属性(property):

<ComboBox xmlns:o="clr-namespace:APP.GLN_Organisator.Objects">
<ComboBox.Resources>
<CollectionViewSource x:Key="ComboCollection"
Source="{Binding Path=mySelectedItem.Stammkinder}" />

<!-- Define a DataTemplate here -->
<DataTemplate DataType="{x:Type o:ChildPartner}">
<TextBlock Text="{Binding PartnerID}"/>
</DataTemplate>

</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="Ohne Stammnummer" Name="NoPID" />
<Separator />
<CollectionContainer Collection="{Binding Source={StaticResource ComboCollection}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>

DataTemplate , 你告诉 WPF 你想如何显示你的项目。如果您不提供任何 DataTemplate并且不要设置 DisplayMemberPath属性值,WPF 回退到简单的 ToString()要求展示您的元素。这就是为什么您看到这些类型字符串而不是您的项目的原因。

关于c# - 如何合并集合中的两个源并在组合框中正确显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50158262/

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