[英]How to create dynamic forms in WPF using MVVM pattern?
我需要在WPF中創建動態表單。 例如,假設我需要允許用戶創建包含有關每個人的信息的家譜,並且每個人都將擁有有關其職業的信息。
class Person
{
int age;
int dateOfBirth;
List<Job> jobList = new List<Job>();
}
class Job
{
string title;
int salary;
}
該程序必須能夠具有允許類中所有成員(包括多個作業)的數據輸入的字段。 我希望表單數據(可能)以XAML編碼,如果他們單擊按鈕“添加人員”,它將展開另一個人員輸入框,以允許用戶添加有關人員的信息。 這與“添加作業”相同,但是作業僅在該人下添加。
(請注意,這樣做的最終結果將是一個包含所有人員及其子代的樹數據結構)
我將如何使用MVVM模式在WPF中執行此操作? 在學習MVVM模式之前,我曾使用過代碼,並使用c#創建了動態視圖以對XAML視圖進行編碼並將其動態添加為子元素。 但是我認為這不是最好的方法,因為它看起來太乏味了。
我是MVVM模式的新手,所以一些有關如何執行此操作的小代碼片段(使用數據綁定?)將非常有幫助。
我用XAML編寫了一個簡短的示例,說明了表單的外觀:
使用DataTemplate
在WPF中解決了此問題。 在任何需要“重復”表格的地方,您都將設置以下內容:
<ItemsControl ItemsSource="{Binding Jobs}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<...>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您可以使用ListView
獲取一個集合控件,該控件將為綁定集合中的每個項目顯示DataTemplate
的實例。 在DataTemplate
內部,您的DataContext
是集合內的綁定項,即。 Job
類的實例。
如果Jobs
是ObservableCollection<T>
則在將項目添加到綁定集合中或從綁定集合中刪除項目時,控件將自動更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.