WPF ComboBox绑定到枚举

时间:2011-02-23 20:50:23

标签: wpf binding combobox selecteditem itemssource

我有一个Combo Box,它使用ObjectDataProvider将ItemsSource绑定到枚举,并且其SelectedItem属性绑定到businessobject的属性。 由于某种原因,它首先绑定SelectedItem而第二个绑定ItemsSource,因此覆盖businessobject属性上的默认值。任何想法为什么和可能修复? 在此先感谢。

XAML:

<CollectionViewSource x:Key="Units">
     <CollectionViewSource.Source>
          <ObjectDataProvider MethodName="GetNames" ObjectType="{x:Type sys:Enum}">
               <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="BO:Unit"/>
               </ObjectDataProvider.MethodParameters>
          </ObjectDataProvider>
     </CollectionViewSource.Source>
</CollectionViewSource>

<ComboBox Grid.Column="1" HorizontalAlignment="Right" Width="80"
          ItemsSource="{Binding Source={StaticResource Units}}" 
          SelectedItem="{Binding Path=Unit}"/>

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码并且工作正常,所以我不认为Bindings的顺序是你的问题。我注意到的一件事是您使用GetNames作为ObjectDataProvider的MethodName,因此ComboBox ItemsSource将是字符串的集合,而不是枚举Unit的集合。如果这是您的意图,则属性Unit应为string

类型

示例

public class NamesViewModel
{
    public NamesViewModel(string unit)
    {
        Unit = unit;
    }
    public string Unit
    {
        get;
        set;
    }
}

如果您将GetNames更改为GetValues,那么它将适用于枚举类型Unit的属性

示例

public class ValuesViewModel
{
    public ValuesViewModel(Unit unit)
    {
        Unit = unit;
    }
    public Unit Unit
    {
        get;
        set;
    }
}