我正在开发自定义的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"/>
但是我希望能够通过Properties Grid设置多个选择。当前,网格将所有枚举值作为下拉菜单列出。
似乎有一些Windows窗体的解决方案,它们源自UITypeEditor。我正在寻找在WPF中实现此功能而不使用第三方库和框架(Telerik,XCEED等)的方法。
谢谢!
答案 0 :(得分:0)
不建议使用枚举,因为枚举不利于属性通知。使用属性的int类型来同意每个数字代表什么。