2

ComboBox サブクラスを作成し、機能を追加しました。

ここで、たとえば TextBox の外部プロパティを公開したいと思います。

<a:MyComboBox SpellCheck.IsEnabled="True" TextBox.SelectedText="{Binding X}" />

これは可能ですか。間違った特定のプロパティを選択したのではないかもしれませんが、私の言いたいことは理解できたと思います。

これは可能ですか?
すべてのプロパティを個別に作成する必要がありますか?

4

1 に答える 1

1

これはXAMLでは不可能です。XAMLでは、説明したようなプロパティパス構文を使用して個々のメンバーのサブプロパティをアドレス指定することはできません。(背景やフォントサイズなどの特定の継承可能なプロパティでも同様のこと可能ですが、特定のサブ要素をアドレス指定するのではなく、継承メカニズムを使用して(含まれているすべてのコントロールに影響を与えます)、とにかくTextBox.SelectedTextでは機能しません。 )。

そうです、MyComboBoxの外部からアクセスする必要のあるTextBoxの機能を表示するには、MyComboBoxクラスでカスタムプロパティを宣言する必要があります。プラス面として、これはカプセル化に適した分野です。将来の開発者が、TextBoxを含まない(またはメンバーがTextBoxという名前ではない、またはTextBoxという名前のメンバーが実際にはプレーンなTextBoxの代わりにRichTextEditor...)。明示的なプロパティにより、MyComboBoxは、そのようなテンプレートが尊重する必要のある動作と状態を明確に定義し、テンプレートの作成者が常にTextBoxを公開するように制約されるのではなく、それを実装する方法をテンプレートに決定させます。

于 2010-02-11T22:56:33.223 に答える