Пользовательское свойство 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);
}
}