我有一个组合框,我为其分配如下值:
<ComboBox Height="33" VerticalAlignment="Top"
ItemsSource="{Binding ProductsList}"
SelectedValue="{Binding ProductName,Mode=TwoWay}"
DisplayMemberPath="ProductName"
SelectedValuePath="ProductID"/>
我将值“ALL”添加到集合 ProductsList 中。我在数据网格中有一个组合框列,它使用相同的产品列表,它不应该显示“全部”。有没有办法将 ALL 添加到 XAML 中的组合框而不是将其添加到集合中?
最佳答案
您可以使用CompositeCollection
,这允许您将集合和静态项目组合到单个ItemSource
示例:
<ComboBox>
<ComboBox.Resources>
<CollectionViewSource x:Key="Products" Source="{Binding ProductsList}"/>
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem>All</ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource Products}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
注意:您必须为 ProductsList
创建一个 CollectionViewSource
才能在 CollectionContainer
中使用它,但这非常简单。您提到您在其他地方使用 ProductsList
,因此您可以在 Window.Resources
或 View 资源中定义 CollectionViewSource
,而不是在 >ComboBox
资源,然后您可以重用它。
关于c# - 在 WPF 中为组合框设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559766/