2017-07-25 113 views
0

我是新來的WPF以前一直與WinForms合作,我仍然試圖讓我的腦袋周圍的WPF心態,這給我的背景是嵌入式編碼,似乎已被刪除。以編程方式在WPF中添加/刪除網格?

在我的項目中,我需要創建一個網格面板「模板」,我將其稱爲「弗雷德」(在這種情況下,弗雷德只是一個圖形化自定義按鈕的集羣),併產生多個實例到用戶界面以編程方式基於外部事件。我發現很難看到一個明顯的方法來做到這一點(也許這是因爲可能有多種方式?),並且已經研究了ControlTemplates,Styles和Custom Elements。我懷疑解決方案在於後者,但是我也擔心我可能會以錯誤的方式考慮這個問題。對我來說,將Fred看作是一個網格資源似乎很有意義,我可以以編程方式調用,當我需要創建一個新的實例時,但由於我發現很難「谷歌」這件事情,那麼也許我會討論這一切錯誤?

如果這有點含糊,我很抱歉。

這裏我的問題是雙重的:

  1. 這是一個明智的方法就是實現我的最終目標,如果我需要以編程方式產卵定製按鈕的這一組(弗雷德),那麼是否有意義遏制這些在一個可以被主C#訪問的網格中,還是存在一個更缺乏標準的方法來實現這一點?

  2. 取決於(1)的答案是否有代碼示例來實現此目的?

回答

0

你正在尋找的概念是一種「ItemsControl的」(其本身是一個可用的類,並且也有幾個派生類等ListViewListBox)與DataTemplate小號組合。

在這種情況下,你會做「弗雷德」一DataTemplate(通常爲您ItemControl小號ItemTemplate財產的XAML直系後裔)。然後,您將ItemsSource綁定到集合(對於運行時添加/刪除應爲ObservableCollection<T>)。

所有這一切都依賴於使用MVVM模式(它來自WinForms你可能不是)。我建議您查看MSDN,Stack Overflow,Reed Copsey的優秀博客系列:http://reedcopsey.com/series/windows-forms-to-mvvm/或者只是谷歌「WPF和MVVM」以瞭解更多信息。

要明確地回答你的問題:

  1. 是;你有正確的概念,但正在用WinForms的術語/實踐思考它。改用MVVM。
  2. 是;有很多可用的資源。
+0

非常感謝。謝謝。 – user8233888

相關問題