簡體   English   中英

如何使用MVVM模式在WPF中創建動態表單?

[英]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類的實例。

如果JobsObservableCollection<T>則在將項目添加到綁定集合中或從綁定集合中刪除項目時,控件將自動更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM