WPF 自定义 属性 - 必需 属性
WPF Custom Property - required property
有什么方法可以在 WPF 中自定义 属性 吗?
我的意思是当我在设计器中的自定义 属性 未填充时出现错误消息之类的东西?例如:必需="true/false"
我的自定义属性定义:
public static readonly DependencyProperty AaFunctionalUnitNameProp;
[Category(VsCategoryName.AaObjectInfo)]
[Description(VsPropertyDescription.FunctionalUnitName)]
public string AaFunctionalUnitName
{
get => (string)GetValue(AaFunctionalUnitNameProp);
set => SetValue(AaFunctionalUnitNameProp, value);
}
没有开箱即用的功能可以执行此操作,但是您可以分配一个 无效(根据您的定义)默认值并在您的 OnInitialized
事件仍然是默认值时抛出异常(当然只有当不在设计模式时)。
示例:
public class CustomControl : Control
{
public static readonly DependencyProperty RequiredPropertyProperty = DependencyProperty.Register(
"RequiredProperty", typeof(int), typeof(CustomControl), new PropertyMetadata(int.MinValue));
public int RequiredProperty
{
get { return (int) GetValue(RequiredPropertyProperty); }
set { SetValue(RequiredPropertyProperty, value); }
}
protected override void OnInitialized(EventArgs e)
{
if(RequiredProperty == int.MinValue)
if(!DesignerProperties.GetIsInDesignMode(this))
throw new Exception("RequiredProperty must be explicitly set!");
base.OnInitialized(e);
}
}
有什么方法可以在 WPF 中自定义 属性 吗?
我的意思是当我在设计器中的自定义 属性 未填充时出现错误消息之类的东西?例如:必需="true/false"
我的自定义属性定义:
public static readonly DependencyProperty AaFunctionalUnitNameProp;
[Category(VsCategoryName.AaObjectInfo)]
[Description(VsPropertyDescription.FunctionalUnitName)]
public string AaFunctionalUnitName
{
get => (string)GetValue(AaFunctionalUnitNameProp);
set => SetValue(AaFunctionalUnitNameProp, value);
}
没有开箱即用的功能可以执行此操作,但是您可以分配一个 无效(根据您的定义)默认值并在您的 OnInitialized
事件仍然是默认值时抛出异常(当然只有当不在设计模式时)。
示例:
public class CustomControl : Control
{
public static readonly DependencyProperty RequiredPropertyProperty = DependencyProperty.Register(
"RequiredProperty", typeof(int), typeof(CustomControl), new PropertyMetadata(int.MinValue));
public int RequiredProperty
{
get { return (int) GetValue(RequiredPropertyProperty); }
set { SetValue(RequiredPropertyProperty, value); }
}
protected override void OnInitialized(EventArgs e)
{
if(RequiredProperty == int.MinValue)
if(!DesignerProperties.GetIsInDesignMode(this))
throw new Exception("RequiredProperty must be explicitly set!");
base.OnInitialized(e);
}
}