1

私のアプリケーションでは、他のプログラマーが私の Usercontrols にプロパティを設定するのを防ぎたいと思っています。

UseLayoutRounding簡単な例は、誰かが true に設定されることを許可したくないということです。

<Button UseLayoutRounding="True"/>

Intelisense私は私を示していることを無効にしたいUseLayoutRounding

4

1 に答える 1

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); }
}

ただし、最初に2番目のアプローチを使用しない場合は、次のように値を変更する可能性があります。

yourSuperControl.SetValue(SuperControlType.UseLayoutRoundingProperty, true);
于 2012-08-17T07:40:03.710 に答える