Пользовательское свойство WPF - обязательное свойство

Есть ли способ сделать пользовательское свойство обязательным в WPF?

Я имею в виду что-то вроде сообщения об ошибке, когда мое пользовательское свойство в конструкторе не заполнено? Например: Обязательно ="правда / ложь"

Мое определение пользовательского свойства:

public static readonly DependencyProperty AaFunctionalUnitNameProp;
    [Category(VsCategoryName.AaObjectInfo)]
    [Description(VsPropertyDescription.FunctionalUnitName)]
    public string AaFunctionalUnitName
    {
        get => (string)GetValue(AaFunctionalUnitNameProp);
        set => SetValue(AaFunctionalUnitNameProp, value);
    }

1 ответ

Решение

Нет встроенной функции, которая делает это, однако вы можете назначить недопустимое (по вашему определению) значение по умолчанию и в вашем 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);
    }
}
Другие вопросы по тегам