我有一个UserControl,HorizontalContentAlignment
的默认值是HorizontalAlignment.Stretch
。在构造函数中,我将其设置为HorizontalAlignment.Left
。
当我使用UserControl并在xaml中为其赋予属性HorizontalAlignment.Right
时,则使用该值,即我无法覆盖构造函数中的值。
我可以覆盖OnApplyTemplate
,OnRender
或Loaded
事件中的属性。
我应该更喜欢这些吗?
基本上我想避免有人可以更改用户控件HorizontalContentAlignment
。
答案 0 :(得分:1)
使用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;
}