如何使用XAML中枚举类型? [英] How can i use enum types in XAML?
问题描述
我学习WPF和我遇到了这个问题:
I'm learning WPF and i encountered this problem:
例如:
我在XAML的另一个命名空间枚举类型:
Example: I've an enum type in another namespace of XAML :
public enum NodeType
{
Type_SYSTEM = 1, // System
Type_DB = 2, // Database
Type_ROOT = 512, // Root folder
Type_FOLDER = 1024, // Folder
}
在我的XAML,我想有一个整数
in my XAML i want to triggering an image with an integer
<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代码类型?
Can i get an integer value and compare it with an enum type directly in XAML code?
我的枚举在命名空间AnotherNamespace.Types
My enum is in namespace "AnotherNamespace.Types"
<DataTrigger Binding="{Binding IntegerType}" Value="MyEnumType.Type_DB">
<Setter Property="Source" Value="/Images/SERVER.PNG"/>
推荐答案
我有一个类似的问题这里,我的最终结果是创建一个通用的是通过枚举
价值我的IValueConverter 想匹配的 ConverterParameter
,并返回真正
或假
取决于该限值枚举的(INT)
值相匹配。
I had a similar question here, and my end result was to create a generic IValueConverter that passed the enum
value I wanted to match in as the ConverterParameter
, and it returns true
or false
depending on if the bound value matches the (int)
value of the Enum.
最终的结果看起来是这样的:
The end result looks like this:
XAML代码:
<DataTrigger Value="True"
Binding="{Binding SomeIntValue,
Converter={StaticResource IsIntEqualEnumConverter},
ConverterParameter={x:Static local:NodeType.Type_DB}}">
转换
Converter
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;
}
这篇关于如何使用XAML中枚举类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!