2017-07-25 6 views
0

私は時々WinFormsで作業していたWPFには新しく、私の背景が埋め込みコードであるWPFの考え方を取り戻そうとしています。WPFでグリッドをプログラムで追加/削除する?

私のプロジェクトでは、グリッドパネル "テンプレート"を作成する必要があります。これは "Fred"(ここではフレッドは単にグラフィカルにカスタマイズされたボタンのクラスタです)と呼ばれ、UIのプログラム的に外部イベントに基づいています。私はこれを行う明白な方法を見出すのが難しいと思っています(多分多方向かもしれないからでしょうか?)ControlTemplates、Styles、Custom Elementsを調べました。私は解決策が後者にあると思うが、私は間違った方法でこれについて考えているかもしれないと心配している。私には、Fredをグリッドリソースとして視覚化するのは理にかなっているようですが、新しいインスタンスを作成する必要があるときにプログラマティックに呼び出すことができますが、私はこれを "google"するのが難しいと感じました。違う?

これは少し曖昧であれば謝ります。ここ

私の質問は2倍です:

  1. は、これは私がプログラム的にカスタマイズされたボタン(フレッド)のこのクラスタを起動する必要がある場合、それは含まれていても意味がない私の最終的な目標、すなわちを達成するための賢明な方法ですメインのC#からアクセスできるグリッド内のこれらのものか、これを達成するための標準的な方法がありますか?

  2. (1)の答えに応じて、これを実現するためのコード例がありますか?

答えて

0

あなたが探している概念はDataTemplate Sとの組み合わせで(使用可能なクラス自体であり、またListViewListBoxのようないくつかの派生クラスを持っている)「のItemsControl」です。この場合

あなたは「フレッド」DataTemplate(一般的にXAMLでのごItemControlItemTemplate財産の直系の子孫など)になるだろう。次に、ItemsSourceをコレクションにバインドします(ランタイムの追加/削除の場合はObservableCollection<T>)。

これはMVVMパターンの使用に依存しています(これはおそらくWinFormsからのものです)。私はMSDNStack Overflow、Reed Copseyの優れたブログシリーズ:http://reedcopsey.com/series/windows-forms-to-mvvm/、またはgoogle "WPF and MVVM"をご覧ください。

明示的にあなたの質問に答えるために:

  1. はい。あなたは正しいコンセプトを持っていますが、WinFormsの用語/プラクティスでは考えています。代わりにMVVMを使用してください。
  2. はい、利用可能な多くのリソースがあります。
+0

非常に高く評価されています。ありがとうございました。 – user8233888

関連する問題