我如何在XAML中使用枚举类型? [英] How can i use enum types in XAML?
问题描述
示例:
我在XAML的另一个命名空间中有一个枚举类型:
public enum NodeType
{
Type_SYSTEM = 1,// System
Type_DB = 2,//数据库
Type_ROOT = 512,//根文件夹
Type_FOLDER = 1024,//文件夹
}
在我的XAML我想触发一个整数的图像
< Image.Style>
< Style TargetType ={x:Type Image}>
< Style.Triggers>
< DataTrigger Binding ={Binding Type}Value ={NodeType:}>
< Setter Property =SourceValue =/ Images / DB.PNG/>
< / DataTrigger>
< DataTrigger Binding ={Binding Type}Value =128>
< Setter Property =SourceValue =/ Images / SERVER.PNG/>
< / DataTrigger>
< /Style.Triggers>
< / Style>
< /Image.Style>
我可以得到一个整数值,并直接在XAML代码中与枚举类型进行比较吗?
我的枚举在命名空间AnotherNamespace.Types中
< DataTrigger绑定={Binding IntegerType}Value =MyEnumType.Type_DB>
< Setter Property =SourceValue =/ Images / SERVER.PNG/>
我有类似的问题此处,最终的结果是创建一个通用的 IValueConverter ,通过枚举
value我想与 ConverterParameter
匹配,并返回 true
或 false
取决于绑定值是否符合枚举的(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;
}
返回false;
}
I'm learning WPF and i encountered this problem:
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
}
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>
Can i get an integer value and compare it with an enum type directly in XAML code?
My enum is in namespace "AnotherNamespace.Types"
<DataTrigger Binding="{Binding IntegerType}" Value="MyEnumType.Type_DB">
<Setter Property="Source" Value="/Images/SERVER.PNG"/>
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 Code:
<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屋!