2

私はComboBoxXAML を持っています:

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

私の静的リソースは を使用してObjectDataProviderComboBox列挙型からの値を設定しています:

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

従業員がいてObservableCollection、Dept プロパティを何か (たとえばDept = Department.Leadership) に設定しています。従業員クラスはINotifyPropertyChange、名前を含む他のものに , を使用します。はComboBox正しく入力されますが、初期値が設定されていません。

SelectedValue私の質問は、従業員の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}, 
};

これは私の静的リソースです:

<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する必要がありDisplayMemberPathますValueMemberPath。あなたの場合、列挙型であるため、それらを設定することはできません。

SelectedItemこのように設定します

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