Свойство WPF Enum Flags Dependency в редакторе свойств XAML - PullRequest
0 голосов
/ 30 марта 2019

Я разрабатываю пользовательский WPF UserControl, который имеет несколько свойств зависимости.Одним из свойств является enum flags.Я пытаюсь проверить, можно ли установить это свойство из 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"/>

Главное окно

Но я хочу иметь возможность установить несколько вариантов с помощью таблицы свойств.В настоящее время сетка перечисляет все значения перечисления в раскрывающемся меню.

Сетка свойств

Похоже, существуют решения для Windows Forms, основанные на UITypeEditor.Я ищу способы реализовать это в WPF без использования сторонних библиотек и фреймворков (Telerik, XCEED и т. Д.)

Спасибо!

1 Ответ

0 голосов
/ 30 марта 2019

Не рекомендуется использовать перечисления, потому что перечисление не подходит для уведомлений о свойствах. Используйте атрибут типа int, чтобы согласиться с тем, что представляет каждое число.

...