私はユーザーコントロールを設計していて、その動作を構成可能にしたいのですが、作成時に一度だけです。特定のウィンドウが特定の構成でそれを使用することを事前に知っているので、後で適応させる必要はありません。
この単純なマークアップを考えてみましょう。
<MyControl SomeProperty="True" SomeOtherProperty="12345" />
SomeProperty
とSomeOtherProperty
は、コードビハインドで宣言されているDependencyPropertiesです。
InitializeComponent()
問題は次のとおりです。コントロールは、が呼び出される前に、コンストラクターで入力データの前処理を行います。SomeProperty
その段階では、ユーザーにアクセスしたり、ユーザーが定義したりすることはできませんSomeOtherProperty
。ユーザーは引き続きデフォルト値を使用しています。
その後、これらのプロパティがXAMLで設定されている場合、コンストラクターの後に値が割り当てられます。を導入し、PropertyChangedCallback
各プロパティが更新された後にもう一度計算を実行することで、それらに対応できます。
値を1回渡すだけで、コントロールの初期化ロジックも1回だけ実行されるようにしたいので、これは最適ではありません。すでに正しい設定になっています。sを使用したソリューションでPropertyChangedCallback
は、このコントロールをより複雑にする必要があります。つまり、コントロールの存続期間中、これらの依存関係プロパティへの変更に対応する必要があります。これは私が必要とする以上のものです-私のプロパティが読み取り専用であり、コントロールの作成時に一度だけ設定されていれば十分です。
XAMLマークアップをクリーンに保ちながら、どうすればそれを実行できますか?