我正在学习 WPF,我遇到了以下问题:
我在 XAML 之外的另一个命名空间中有一个枚举类型:
public enum NodeType
{
Type_SYSTEM = 1, // System
Type_DB = 2, // Database
Type_ROOT = 512, // Root folder
Type_FOLDER = 1024, // Folder
}
在我的 XAML 中,我想用整数触发图像
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{NodeType: }">
<Setter Property="Source" Value="/Images/DB.PNG"/>
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="128">
<Setter Property="Source" Value="/Images/SERVER.PNG"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
有没有办法直接在 XAML 代码中获取整数值并将其与枚举类型进行比较?
我的枚举在命名空间 AnotherNamespace.Types
<DataTrigger Binding="{Binding IntegerType}" Value="MyEnumType.Type_DB">
<Setter Property="Source" Value="/Images/SERVER.PNG"/>
</DataTrigger>
最佳答案
我有一个类似的问题here ,我的最终结果是创建一个通用的 IValueConverter传递了我想要匹配的 enum
值作为 ConverterParameter
,它返回 true
或 false
,具体取决于如果绑定(bind)值与枚举的 (int)
值匹配。
最终结果是这样的:
XAML 代码:
<DataTrigger Value="True"
Binding="{Binding SomeIntValue,
Converter={StaticResource IsIntEqualEnumConverter},
ConverterParameter={x:Static local:NodeType.Type_DB}}">
转换器
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter == null || value == null) return false;
if (parameter.GetType().IsEnum && value is int)
{
return (int)parameter == (int)value;
}
return false;
}
关于c# - 如何在 XAML 中使用枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279602/