我對MVVM和WPF比較陌生,我只想點頭向正確的方向發展。在WPF MVVM中動態添加控件
我正在使用動態搜索視圖,其中單擊按鈕應添加一個包含3個組合框和2個文本框的新行。我應該如何去做這件事?謝謝。
我對MVVM和WPF比較陌生,我只想點頭向正確的方向發展。在WPF MVVM中動態添加控件
我正在使用動態搜索視圖,其中單擊按鈕應添加一個包含3個組合框和2個文本框的新行。我應該如何去做這件事?謝謝。
,如果你真的想這樣做MVVM,試着去忘記 「我怎樣才能添加控件」。你不必,只是想想你的viewmodels - WPF爲你創建控件:)
在你的案例中可以說我們有一個SearchViewModel和一個SearchEntryViewmodel。
public class SearchEntryViewmodel
{
//Properties for Binding to Combobox and Textbox goes here
}
public class SearchViewModel
{
public ObservableCollection<SearchEntryViewmodel> MySearchItems {get;set;}
public ICommand AddSearchItem {get;}
}
到現在爲止您不必考慮usercontrols/view。在您的SearchView中,您創建一個ItemsControl並將ItemsSource綁定到MySearchItems。
<ItemsControl ItemsSource="{Binding MySearchItems}"/>
你現在看到的所有ItemsControl中的(只是toString()方法ATM)的SearchEntryViewmodels的。
爲了滿足您的要求,以顯示與3Comboboxes每SearchEntryViewmodel等你只需要在你的資源來定義一個DataTemplate
<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}">
<StackPanel Orientation="Horizontal">
<Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/>
<!-- the other controls with bindings -->
</StackPanel>
</DataTemplate>
多數民衆贊成:)你從來沒有去想如何添加控件動態。你只需要添加新的SearchEntryViewmodel到你的集合。
這種方法被稱爲Viewmodel第一我認爲它是MVVM最簡單的方法。
如果你是MVVM和WPF的新手,那麼有一個關於如何通過Jason Dollinger構建一個C#/ WPF/MVVM應用程序的精彩視頻教程,在這裏可以找到on lab49。他在這個驚人的視頻開發的所有源代碼也可用right here on lab49.
看完它後,你肯定沒有任何問題開發你的搜索視圖。
該網站在我們的辦公室被封鎖。將盡量在家中打開。感謝您的好帖子的鏈接。 – spiritqueen
一種選擇是,您可以通過創建新實例在後端創建文本框和組合框。 但更好的選擇是,您可以創建一個包含您想要添加的所有texboxes和組合框以及您想要的格式的usercontrol。 創建完按鈕後,您可以創建此用戶控件的實例並將其設置在網格或任何其他控件中,方法是使用該控件的SetValue屬性。
如果您是WPF和MVVM的新手,請閱讀此博客以瞭解此內容。
https://radhikakhacharia.wordpress.com/2012/06/01/wpf-tutorial-3/
https://radhikakhacharia.wordpress.com/2012/02/13/model-view-viewmodel/
也被阻止在我們的辦公室。稍後訪問。謝謝。 – spiritqueen
謝謝。在我搜索網絡時發現了這種方法。很高興知道我在正確的軌道上。 – spiritqueen