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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF枚举标志XAML属性编辑器中的依赖属性相关的知识,希望对你有一定的参考价值。

我正在开发自定义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

通过从UITypeEditor派生,似乎有Windows Forms的解决方案。我正在寻找在不使用第三方库和框架(Telerik,XCEED等)的情况下在WPF中实现此方法的方法

谢谢!

答案

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

以上是关于WPF枚举标志XAML属性编辑器中的依赖属性的主要内容,如果未能解决你的问题,请参考以下文章

WPF xaml中列表依赖属性的定义

WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

Wpf:通用集合依赖属性

WPF--属性系统

WPF--属性系统

WPF中XAML的触发器的属性,事件 都有那些?以及如何寻找