如何将属性绑定到静态枚举值
本文关键字:静态 枚举 绑定 属性 | 更新日期: 2023-09-27 18:00:14
我有一个具有各种值的枚举:
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}} />
我现在没有数据对象,我只想从转换器中选择颜色值,而不是在图例中硬键入。有没有我能做到的?
我认为这篇Stack Overflow帖子可能就是你的答案。您必须在xaml的resources部分列出您的枚举值,并将其键用作StaticResource键。
使用ObjectDataProvider获取所有枚举值,然后使用ItemTemplate 在ListBox中显示它们
<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>