在我的应用程序中,我想阻止其他程序员将属性设置为我的Usercontrols,这可能会导致一些麻烦。
一个简单的例子是我不想让某人将UseLayoutRounding
设置为true。
<Button UseLayoutRounding="True"/>
我想禁用Intelisense
向我显示UseLayoutRounding
。
答案 0 :(得分:1)
您可以覆盖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);