2015-06-26 117 views
0

我有不同值的枚舉:如何將一個屬性綁定到靜態枚舉值?

public enum UserStatus 
{ 
    Active = 1, 
    Inactive = 2, 
    Invalid = 3, 
    Blocked = 4, 
    Pending = 5 
} 

而且在我的UI我指定的枚舉的每個值的顏色,因爲它在不同的窗口中使用,我已經創建了它轉換器。

現在我想顯示一個一些的枚舉值的傳說,是否有無論如何我可以將靜態枚舉值綁定到WPF控件中的屬性?

<!-- I want ? to be a fixed enum value --> 
<TextBlock Text="{Binding ?, Converter={StaticResource=UserStatusToString}}" Foreground={Binding ?, Converter={StaticResource=UserStatusToBrush}} /> 

我沒有在這一點上有一個數據對象,我只是想以某種方式挑選從轉換器的顏色值而不是硬鍵入它的傳奇。無論如何,我可以做到這一點?

回答

0

我認爲this堆棧溢出帖子可能是你的答案。您必須將您的枚舉值列在xaml的資源部分中,並將其密鑰用作StaticResource密鑰。

0

使用的ObjectDataProvider來獲取所有枚舉值,然後用ItemTemplate中

<Window xmlns:local="clr-namespace:FooApp" ... > 
    <Window.Resources> 
     <ObjectDataProvider x:Key="FooEnumValues" 
      MethodName="GetValues" 
      ObjectType="{x:Type System:Enum}"> 
      <ObjectDataProvider.MethodParameters> 
       <x:Type TypeName="local:Foo" /> 
      </ObjectDataProvider.MethodParameters> 
     </ObjectDataProvider> 
    </Window.Resources> 

    <Grid> 
     <ListBox ItemsSource="{Binding Source={StaticResource FooEnumValues}}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock 
    Text="{Binding Converter={StaticResource=UserStatusToString}}" 
    Foreground="{Binding Converter={StaticResource=UserStatusToBrush}}"/> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Window> 
展示他們的ListBox