C# - 来自Enum的WPF ComboBox SelectedValue

时间:2013-05-28 01:09:27

标签: 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正确填充,但未设置初始值。

我的问题是,如何将SelectedValue的{​​{1}}设置为员工的相应财产?

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

ComboBox

这是我的静态资源:

ObservableCollection<Employee> emps = new ObservableCollection<Employee>
{
    new Employee{Name = "Exam Pell", Title = "Manager", Phone = "(801) 555-2677", Email = "examPell@co.co", isActive = true, Dept = Department.Commission}, 
};

我实际上已经注意到,每当我尝试设置SelectedValue或SelectedItem时,组合框变为红色(我有一个<ObjectDataProvider x:Key="Depts" MethodName="GetValues" ObjectType="{x:Type sys:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="en:department+Department"></x:Type> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> 也与此相关,但有一个DataGridComboBoxColumn)。此外,我有ItemsSource也显示部门 - 但是,这个显示正确,但即使我更改任何员工的ListBox选择,也不会更新。

1 个答案:

答案 0 :(得分:3)

而不是设置SelectedValue设置SelectedItem

要设置SelectedValue,您需要设置DisplayMemberPathValueMemberPath。在你的情况下,因为你的Enum你不能设置它们。

所以设置SelectedItem就像这样

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