在我的应用程序中,我想防止其他程序员为我的用户控件设置属性,这可能会导致一些麻烦。
一个简单的例子是我不想让某人设置UseLayoutRounding
为真。
<Button UseLayoutRounding="True"/>
我想禁用它Intelisense
显示我UseLayoutRounding
。
OnPropertyChanged
当有人试图改变它时,你可以重写方法并抛出异常:
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
if (e.Property == UseLayoutRoundingProperty && (bool)e.NewValue)
{
throw new PropertyIsImmutableException("UseLayoutRounding");
}
//....
base.OnPropertyChanged(e);
}
或者您可以使用new
关键字:
public new bool UseLayoutRounding
{
get { return (bool)GetValue(UseLayoutRoundingProperty); }
}
但是,在没有第一个的情况下使用第二种方法仍然可以像这样改变值:
yourSuperControl.SetValue(SuperControlType.UseLayoutRoundingProperty, true);