2014-01-08 39 views
1

我有一個綁定到一個枚舉這樣一個WPF組合框:綁定WPF組合框ENUM和隱藏某些價值

<Window.Resources> 
    <local:EnumDescriptionConverter x:Key="enumDescriptionConverter"/> 
    <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="cityNamesDataProvider"> 
     <ObjectDataProvider.MethodParameters> 
      <x:Type TypeName="local:MyModel+CityNamesEnum"/> 
     </ObjectDataProvider.MethodParameters> 
    </ObjectDataProvider> 
</Window.Resources> 

<ComboBox x:Name="cityNameComboBox" ItemsSource="{Binding Source={StaticResource cityNamesDataProvider}}" SelectionChanged="cityNameComboBox_SelectionChanged"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Converter={StaticResource enumDescriptionConverter}}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

說我結合枚舉具有描述屬性,看起來像這樣:

public enum CityNamesEnum 
{ 
    [Description("New York City")] 
    NewYorkCity, 
    [Description("Chicago")] 
    Chicago, 
    [Description("Los Angeles")] 
    LosAngeles 
} 

我並不總是想要顯示每個枚舉值。是否可以切換一個或多個枚舉值的可見性?如果這些是ComboBoxItems,我想我可以簡單地將.Visibility屬性設置爲隱藏,但由於它們是枚舉值,我不確定這是否可能。有人知道嗎?

回答

6

爲什麼不只是創造出不過濾你一個正常的C#方法,然後有ObjectDataProvider的指向該方法,而不是

static method IEnumerable<CityNamesEnum> MyFilter() { 
    yield return CityNames.NewYorkCity; 
    yield return CityNames.Chicago; 
} 

XAML

<ObjectDataProvider 
    MethodName="MyFilter" 
    ObjectType="{x:Type local:TheType}" 
    x:Key="cityNamesDataProvider"> 
</ObjectDataProvider> 
+0

感謝,這是一個很好的建議。實際上,我需要根據另一個組合框中的選定項過濾此特定組合框的枚舉值。我會看看我可以如何將您的想法用於解決方案。 – user685869