如何禁用为控件设置属性的可能性?

时间:2012-08-17 06:42:50

标签: c# wpf xaml

在我的应用程序中,我想阻止其他程序员将属性设置为我的Usercontrols,这可能会导致一些麻烦。

一个简单的例子是我不想让某人将UseLayoutRounding设置为true。

<Button UseLayoutRounding="True"/>

我想禁用Intelisense向我显示UseLayoutRounding

1 个答案:

答案 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);