MVVM パターンを使用して、ベクター CAD アプリケーションと同じように、Canvas に線とテキストを書きたいと思います。これを調査する中で、次のように、Canvas として宣言された ItemsPanelTemplate で ItemsControl を使用する必要があると結論付けました。
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
私はまた、そうのように、ItemTemplateに何かを入れる必要があることも理解しました(何がわからない)。. .
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- Don't know what goes here -->
</DataTemplate>
</ItemsControl.ItemTemplate>
私の質問
ViewModelにバインドし、ViewModelにテキスト(任意の回転、任意のフォントなど)、線、円弧、ベジェ、形状のいずれかを描画させるために、DataTemplateに何を入れるかについて誰かアドバイスしてもらえますか-- -バインドされたコレクション内のさまざまな種類の要素に応じて必要なものは何ですか?
私の推測では、それは System.Windows.FrameworkTemplate である必要がありますが、私はまだそれを使用する方法を理解しようとしており、遅いです。それとも、ContentControl と Presenter でしょうか。
参考文献
ItemsControl 使用時に X/Y 位置を Canvas Left/Top プロパティに変換する方法
ViewModel を ItemsControl に配置するにはどうすればよいですか
Canvas の Children プロパティを XAML でバインドすることは可能ですか? 注:これに関する2番目の回答を参照してください。