WPF 枚举在 XAML 属性编辑器中标记依赖项属性



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

这是属性

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"/>

主窗口

但我希望能够通过属性网格设置多个选择。目前网格将所有枚举值列为下拉菜单。

属性网格

似乎有从UITypeEditor派生的Windows窗体解决方案。我正在寻找在不使用第三方库和框架(Telerik、XCEED 等)的情况下在 WPF 中实现这一点的方法。

谢谢!

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

最新更新