少し時間がかかりましたが、解決策を見つけたようです。
これで、すべてのサブクラスが必要とするビジュアル要素を既に含む基本クラスを作成できるようになりました。XamlWriter/Reader を介して重複なしで解析できます。ふう。
1) UserControl を拡張します (Add->UserControl ではなく、Add->Class を使用して手動で継承します)
2) 標準の InitializeControl(); を配置します。コンストラクターに
3) InitializeControl() を実装し、そこにレイアウト、子の追加などを入れます
4) 狂ったように xamlwrite/xamlread/inherit
それが誰かに役立つことを願っており、私は予期せぬことを監督していません..
-- 編集: もちろん。重複がありますが、それらを見ることはできません。XamlReader が通過した後、InitializeComponent() によって作成された UIElements と、その後 xaml で解析された UIElements があります。コード内の参照は、表示されないコードで作成されたコントロールに関するものです:/
はぁ。
これを回避する完全な方法とはほど遠い方法の 1 つは、スイッチを Initialized イベント ハンドラーに配置することです
。たとえば
、Initialize() がビジュアル ツリーに UIElements を追加する場合、Reinitialize() は適切な参照 (by ) と Multiinitialzeを見つけるだけです。 () は、イベント ハンドラーを再作成し、XamlReader を通過する途中で失われるものを再作成します。if(HasContent)
Initialize();
else
Reinitialize();
Multiinitialize();
control = FindName("controlName")
さて、カスタムの継承された UserControl を xaml でインスタンス化できるようになりましたが、属性を設定する簡単な方法はありません。これは、Initialized イベントの前に属性の設定が行われ、NullPointerExceptions が待機しているためです。あなたは私が推測するバインディングでそれを回避することができます.
しかし、もっと簡単な方法が必要です。私にお知らせください!