我有一个UserControl,HorizontalContentAlignment
的默认值为HorizontalAlignment.Stretch
。在构造函数中,我将其设置为HorizontalAlignment.Left
。
[当我使用UserControl并在xaml中为其赋予属性HorizontalAlignment.Right
时,将使用该值,即我无法在构造函数中覆盖该值。
我可以覆盖OnApplyTemplate
,OnRender
或Loaded
事件中的属性。
我是否应该更喜欢这些?基本上,我想避免有人可以更改用户控件HorizontalContentAlignment
。
使用dependency property coercion callback(每次依赖项属性的值即将更改时都会自动调用)以将属性强制为所需的值:
static YourUserControl () {
HorizontalContentAlignmentProperty.OverrideMetadata(
typeof(YourUserControl),
new FrameworkPropertyMetadata(
HorizontalAlignment.Stretch,
null,
CoerceHorizontalContentAlignment));
}
private static object CoerceHorizontalContentAlignment(DependencyObject d, object baseValue) {
return HorizontalAlignment.Stretch;
}