如何使用XAML中枚举类型? [英] How can i use enum types in XAML?

查看:823
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆