子要素をStackPanel
またはGrid
(可変の行数で、StackPanel
と見なされる)のいずれかでレイアウトするカスタムコンポーネントを作成したいとします。項目は、いくつかの設定を保持するカスタム要素/オブジェクトです(いくつかのラベルとテキストボックスを表示するためにいくつかのコントロールが作成されます)。ItemsControlカスタムサブ要素のみを持つ
理想的には、成分(SpecializedCustomPanelItem
がCustomPanelItem
のサブタイプである。)このように何らかの形で使用する必要があります。
<CustomPanel>
<CustomPanelItem Param1="value A" Param2="value B">Text</CustomPanelItem>
<CustomPanelItem Param1="value C">Other text</CustomPanelItem>
<SpecializedCustomPanelItem>More text</SpecializedCustomPanelItem>
<!-- The number of items is variable -->
</CustomPanel>
私は今しばらくItemsControl
に読んだ、そしてそれはかなりよく私のニーズに合いました。アイテムのタイプを作成し、ItemsControl
の中から利用可能なデータテンプレートを作成します。その後、彼らはすでにうまくいくはずです。
しかし、ItemsControl
の中のアイテムに特定のタイプ(つまり、CustomPanelItem
またはサブタイプ)を指定したいと考えています。私は実際にItemsControl
がこれを許可すると思っていましたが、ComboBox
またはMenuItem
のように、実際には任意のサブタイプを許可し、必要に応じてアイテムコンテナにラップします。
ItemsControl
が実際に私が探しているものだと思っています。そのようなコントロールのほとんどが実装している選択やスクロールのような「派手な」ものは欲しくないからです。実際には、アプリケーション内の共通パターンへのシンプルなインターフェイスを構築して、それらのコンポーネントを自動生成し、Grid
/StackPanel
にレイアウトしたいだけです。
まだItemsControl
を使用しているか、カスタムコンポーネントをさらに作成する必要がありますか?
あなたのviewmodelからあなたの項目をバインドするつもりですか、彼らは単に静的にXAMLで宣言されていますか? – NVM
これらは静的に宣言されていますが、内容(生成されたテキストボックス内の値)はおそらくバインディングを取得します。 – poke
この場合、パネルにどのタイプを追加したのかをコンパイル時に知っています。実行時にコンパイル時に問題が発生する可能性はありません。したがって、このようなチェックはランタイムチェックではなく単体テストに適していますか? – NVM