#wpf #xaml #controls #customer
#wpf #xaml #элементы управления
Вопрос:
Я хочу создать элемент customer, который наследуется от Thumb, который я называю «MyThumb».
Я хочу, чтобы у MyThumb не было свойства Width и Height, что означает, что пользователь не может установить его ширину или высоту с помощью XAML или кода. Вместо этого я хочу предоставить свойство «Length», которое означает, что ширина и высота этого элемента управления имеют одинаковую длину.
Ответ №1:
Вы не можете изменить API базового класса, удалив свойства, но вы могли бы, например, переопределить метаданные для Width
и Height
свойств и предоставить CoerceValueCallback
, который предотвращает присвоение свойству пользовательского значения:
public class MyThumb : Thumb
{
private const double DefaultWidth = 100.0;
public MyThumb()
{
WidthProperty.OverrideMetadata(typeof(MyThumb),
new FrameworkPropertyMetadata(DefaultWidth) { CoerceValueCallback = new CoerceValueCallback(OnWidthCoerced) });
}
private object OnWidthCoerced(DependencyObject d, object baseValue)
{
return DefaultWidth;
}
}
В качестве альтернативы вы можете создать InvalidOperationException
.