2

我有一个组合框,它使用 ObjectDataProvider 将 ItemsSource 绑定到枚举,并且其 SelectedItem 属性绑定到业务对象的属性。出于某种原因,它首先绑定 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}"/>
4

1 回答 1

0

我试过你的代码,它工作正常,所以我不认为绑定的顺序是你的问题。我注意到的一件事是,您将GetNames其用作 MethodName ,ObjectDataProvider因此ComboBoxItemsSource 将是字符串的集合,而不是 enum Unit。如果这是您的意图,那么该属性Unit应该是类型string

例子

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

如果您更改GetNamesGetValues它将适用于枚举类型的属性Unit

例子

public class ValuesViewModel
{
    public ValuesViewModel(Unit unit)
    {
        Unit = unit;
    }
    public Unit Unit
    {
        get;
        set;
    }
}
于 2011-02-23T21:47:08.123 回答