私のアプリケーションでは、他のプログラマーが私の Usercontrols にプロパティを設定するのを防ぎたいと思っています。
UseLayoutRounding
簡単な例は、誰かが true に設定されることを許可したくないということです。
<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); }
}
ただし、最初に2番目のアプローチを使用しない場合は、次のように値を変更する可能性があります。
yourSuperControl.SetValue(SuperControlType.UseLayoutRoundingProperty, true);