XAML属性编辑器中的WPF枚举标志依赖项属性

时间:2019-03-29 22:44:58

标签: wpf user-controls dependency-properties enum-flags uitypeeditor

我正在开发自定义的WPF UserControl,它具有很少的依赖项属性。属性之一是枚举标志。我正在尝试检查是否可以从属性网格的Designer中设置此属性。

这是财产

    public Letters Letter
    {
        get
        {
            return ((Letters)GetValue(LetterProperty));
        }
        set
        {
            SetValue(LetterProperty, value);
        }
    }

    private static readonly DependencyProperty LetterProperty =
        DependencyProperty.Register("LetterProperty", typeof(Letters), typeof(TestUserControl), new PropertyMetadata(new PropertyChangedCallback(OnLetterChanged)));



    private static void OnLetterChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
    {
        return;
    }

    [Flags]
    public enum Letters
    {
        A = 1,
        B = 2,
        C = 4,
        D = 8
    }

    private void TxtBlock_Loaded(object sender, RoutedEventArgs e)
    {
        OutputText = "";

        foreach (Letters letter in Enum.GetValues(typeof(Letters)))
        {
            if ((letter & Letter) != 0)
            {
                OutputText += letter + Environment.NewLine;
            }
        }
    }

从XAML设置多个标志可以正常工作,并且我正在设置正确的值。

<Border BorderThickness="2" BorderBrush="Black">
<local:TestUserControl Letter="A,B,C"/>

Main Window

但是我希望能够通过Properties Grid设置多个选择。当前,网格将所有枚举值作为下拉菜单列出。

Properties Grid

似乎有一些Windows窗体的解决方案,它们源自UITypeEditor。我正在寻找在WPF中实现此功能而不使用第三方库和框架(Telerik,XCEED等)的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

不建议使用枚举,因为枚举不利于属性通知。使用属性的int类型来同意每个数字代表什么。