c# - 在 WPF 中为组合框设置默认值

标签 c# wpf combobox

我有一个组合框,我为其分配如下值:

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

相关文章:

c# - 使用 EF 和 Dot Net Core 1(PostgreSQL 数据库)生成迁移时出错

c# - 处理MVVM下WPF中的 "X"关闭按钮

c# - ComboBox SelectedItem 未设置 x :Bind

c# - 在 Visual Studio Code 中找不到 Xunit 命名空间

c# - 如何列出实体集的属性?

c# - 将 IntPtr 指向的内存内容发送到 C# 上的 MemoryStream 变量

c# - 在 MVVM 中使用 ScrollViewer 滚动到控件的顶部

c# - 基于 XML 的元数据驱动的 WPF 应用程序

c# - 为什么 DependencyProperty.UnsetValue 被传递到 Equals()

javafx - 如何获取 TableView 中 ComboBoxTableCell 中选定的值