【问题标题】:WPF Enum Flags Dependency property in XAML property editorXAML 属性编辑器中的 WPF Enum Flags Dependency 属性
【发布时间】:2019-03-29 22:44:57
【问题描述】:

我正在开发具有少量依赖属性的自定义 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

似乎有从 UITypeEditor 派生的 Windows 窗体的解决方案。我正在寻找在 WPF 中实现此功能的方法,而无需使用 3rd 方库和框架(Telerik、XCEED 等)

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 2012-11-29
      • 2018-08-25
      相关资源
      最近更新 更多