【发布时间】: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"/>
但我希望能够通过属性网格设置多个选择。当前网格将所有枚举值列为下拉菜单。
似乎有从 UITypeEditor 派生的 Windows 窗体的解决方案。我正在寻找在 WPF 中实现此功能的方法,而无需使用 3rd 方库和框架(Telerik、XCEED 等)
谢谢!
【问题讨论】:
标签: wpf user-controls dependency-properties enum-flags uitypeeditor