2011-02-23 149 views
2

我有一個組合框,它具有使用ObjectDataProvider綁定到枚舉的ItemsSource,它的SelectedItem屬性綁定到一個業務對象的屬性。 出於某種原因,它首先綁定SelectedItem,然後綁定ItemsSource,因此覆蓋BusinessBject屬性上的默認值。任何想法爲什麼可能修復? 在此先感謝。WPF組合框與枚舉綁定

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}"/> 
+2

可能會幫助:[WPF ObjectDataProvider - 綁定枚舉到ComboBox](http://www.codearsenal.net/2012/11/wpf-objectdataprovider-binding-enum-to-combobox.html) – 2012-11-06 05:07:06

回答

0

我想你的代碼,它的正常工作,所以我不認爲綁定的順序是你的問題。我注意到的一件事是,您使用GetNames作爲ObjectDataProvider的MethodName,因此ComboBox ItemsSource將是字符串集合,而不是枚舉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; 
    } 
} 
+0

omg它花了我這麼長時間去嘗試調試這個。非常感謝,它現在完美運作。 – 2011-02-23 21:51:59