1

私はサードパーティのコントロールを拡張しようとしています.ComboBoxです(標準のSilverlightのものではありませんが、この質問には関係ありません)。これを行うには、新しいテンプレート コントロールをコントロール プロジェクトに追加し、新しいコントロールを Control ではなく ComboBox から継承するように変更します。generic.xaml ファイルにスタイルが作成されているので、挿入されたデフォルトの境界線を削除してから、PopupTemplate のプロパティ セッターを追加します。

私の問題は、このようにすると、コンボボックスが Silverlight アプリケーションで (目に見えて) レンダリングされなくなることです。ただし、行をコメントアウトすると、拡張機能のコンストラクターで

this.DefaultStyleKey = typeof(MyComboBox);

PopupTemplate xaml ビットをメインの Silverlight ページに配置すると、正しくレンダリングされます。ポップアップ テンプレートをコントロール ライブラリ内で宣言したいのですが、これは通常の Template プロパティも定義する必要があるということですか? 明示的に指定していないものは基本コントロールから継承する必要があると考えるのは間違っていますか?

4

1 に答える 1

1

コントロールは、デフォルト スタイルを 1 つだけ持つことができます。ベース コントロールのデフォルト スタイル全体を Generic.Xaml にコピーして、新しいスタイルにMyComboBox合わせて調整する必要があります。

于 2009-11-24T23:37:44.403 に答える