C# - 来自枚举的 WPF ComboBox SelectedValue

标签 c# wpf combobox enums selectedvalue

我在 XAML 中有一个 ComboBox:

<ComboBox x:Name="Form1Combobox" Width="150" IsSynchronizedWithCurrentItem="True" SelectedValue="{Binding Dept}" ItemsSource="{Binding Source={StaticResource ResourceKey=Depts}}"/>

我的静态资源正在使用 ObjectDataProvider 使用枚举中的值填充 ComboBox:

public enum Department
{
    Leadership,
    Maintenance,
    Salaried,
    Commission
}

我有一个员工的 ObservableCollection,我将他们的 Dept 属性设置为某个值(例如,Dept = Department.Leadership)。员工类使用 INotifyPropertyChange 来处理其他事情,包括姓名。 ComboBox 已正确填充,但未设置其初始值。

我的问题是,如何将 ComboBoxSelectedValue 设置为员工的适当属性?

编辑: 这是我的可观察集合(片段)。

ObservableCollection<Employee> emps = new ObservableCollection<Employee>
{
    new Employee{Name = "Exam Pell", Title = "Manager", Phone = "(801) 555-2677", Email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="65001d04083500090925060a4b060a" rel="noreferrer noopener nofollow">[email protected]</a>", isActive = true, Dept = Department.Commission}, 
};

这是我的静态资源:

<ObjectDataProvider x:Key="Depts" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="en:department+Department"></x:Type>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

我实际上注意到,每当我尝试设置 SelectedValue 或 SelectedItem 时,组合框就会变成红色(我有一个 DataGridComboBoxColumn 也与此相关,但有一个 ItemsSource)。另外,我有一个也显示部门的 ListBox - 然而,这个显示正确,但即使我更改任何员工的 ComboBox 选择也不会更新。

最佳答案

不要设置SelectedValue而是设置SelectedItem

要设置SelectedValue,您需要设置DisplayMemberPathValueMemberPath。在你的情况下,因为它是一个枚举,你无法设置它们。

所以像这样设置SelectedItem

<ComboBox x:Name="Form1Combobox" 
          Width="150" 
          IsSynchronizedWithCurrentItem="True" 
          SelectedItem="{Binding Dept}" 
          ItemsSource="{Binding Source={StaticResource ResourceKey=Depts}}"/>

关于C# - 来自枚举的 WPF ComboBox SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782439/

相关文章:

c# - Azure SignalR 服务 | Asp.Net 网络 API |控制台客户端

c# - SQL查询选择谜题

c# - 通过 XML 属性扩展 ASP.Net TreeView 中的节点

C# WPF MVVM ComboBox SelectedItem

javascript - ExtJS 组合框过滤器

c# - 如何将数组发送到 asp.net mvc 中的另一个 Controller 方法?

c# - 网格或边框不允许掉落

c# - 如何检测键盘输入代码页

c# - WPF 有效地重用 Xaml

带有可搜索标签和选项描述的 jQuery 自动完成组合框