wpf依赖属性枚举集合 [英] wpf dependency property enum collection

查看:154
本文介绍了wpf依赖属性枚举集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个枚举列出所有可能的设置:

I have an enum listing all possible settings:

public enum Settings
{
  Settings1,
  Settings2,
  Settings3
}

在我的用户控件中要实现一个新的depedency属性,其中包含设置列表,并且可以使用它:

In my user control i want to implement a new depedency property that holds a list of settings and be able to use it like this:

<my:Control Settings="Settings1, Settings2" />

我应该如何实现?

推荐答案

public class StringDelimitedToEnumListConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        List<Settings> retval = new List<Settings>();
        if(value == null || value.GetType() != typeof(string) || targetType != typeof(List<Settings>) )
        {
            throw new ArgumentException("value must be of type string, target type must be of type List<Settings>");
        }
        string workingValue = value.ToString();
        if (String.IsNullOrEmpty(workingValue))
        {
            throw new ArgumentException("value must not be an empty string");
        }
        if (workingValue.Contains(','))
        {
            string[] tokens = workingValue.Split(',');
            foreach (string s in tokens)
            {
                retval.Add((Settings)Enum.Parse(typeof(Settings), s));
            }
            return retval;
        }
        else
        {
            //there was only 1 value
            retval.Add((Settings)Enum.Parse(typeof(Settings),workingValue);
            return retval;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        //do we care?
        throw new NotImplementedException();
    }
}

这篇关于wpf依赖属性枚举集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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