2013-06-13 78 views
1

我在我看來有一個綁定到ComboBox的枚舉。使用ObjectDataProvider綁定枚舉

public enum MyItems 
{ 
    [Browsable(false)] 
    Item1, 

    [Browsable(true)] 
    Item2, 

    [Browsable(false)] 
    Item3, 

    [Browsable(true)] 
    Item4, 
} 

鑑於我使用ObjectDataProvider

<ObjectDataProvider x:Key="eMyItems" MethodName="GetValues" 
         ObjectType="{x:Type System:Enum}"> 
     <ObjectDataProvider.MethodParameters> 
      <x:Type TypeName="Enums:MyItems"/> 
     </ObjectDataProvider.MethodParameters> 
    </ObjectDataProvider>: 

我的ComboBox如下所示:

<ComboBox ItemsSource="{Binding Source={StaticResource eMyItems}}" SelectedValue="{Binding Item}"/> 

的問題是,我看到所有枚舉即使是那些在他們之上有[Browsable(false)]

enter image description here

我缺少什麼?

+0

[WPF數據可能重複的結合:如何將數據使用XAML的枚舉組合框綁定? ](http://stackoverflow.com/questions/4306743/wpf-data-binding-how-to-data-bind-an-enum-to-combo-box-using-xaml) – Alberto

+0

XAML沒有跳過的概念標記爲[Browsable(false)]的枚舉。 BrowsableAttribute僅用於設計時的交互式屬性窗口,僅此而已。另一個相關的SO問題只是重新設定它。 – Sorensen

回答

1

一個在此相關的問題的答案看起來似乎是對您有所幫助:

WPF Data binding: How to data bind an enum to combo box using XAML?

+0

我看到了這個答案,我不知道在哪裏使用EnumerationManager。我想知道是否有任何屬於ObjectDataProvider的屬性引用了可瀏覽的。 –

+0

您需要對您的代碼進行的唯一更改是將EnumerationManager包含在任何名稱空間似乎都適合的位置。並將ObjectDataProvider定義中的ObjectType更改爲名稱空間:EnumerationManager。我不認爲有沒有幫助者類去搜索Browsable屬性就可以做什麼。 –