2

ComboBox在 XAML 中有一个:

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

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

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

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}, 
};

这是我的静态资源:

<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任何员工的选择也不会更新。

4

1 回答 1

3

而不是设置SelectedValueset SelectedItem

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

所以这样SelectedItem设置

<ComboBox x:Name="Form1Combobox" 
          Width="150" 
          IsSynchronizedWithCurrentItem="True" 
          SelectedItem="{Binding Dept}" 
          ItemsSource="{Binding Source={StaticResource ResourceKey=Depts}}"/>
于 2013-05-28T01:16:23.210 回答