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);
    }
}