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

问题描述 投票:0回答:1

我正在开发自定义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中实现此方法的方法

谢谢!

wpf user-controls dependency-properties enum-flags uitypeeditor
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.