gpt4 book ai didi

wpf - 在 WPF MVVM 中动态添加控件

转载 作者:行者123 更新时间:2023-12-03 12:02:26 25 4
gpt4 key购买 nike

我正在开发一个动态搜索 View ,其中单击一个按钮应添加一个包含 3 个组合框和 2 个文本框的新行。

我该怎么做呢?

最佳答案

如果您真的想做 mvvm ,请尝试忘记“如何添加控件”。您不必这样做,只需考虑您的 View 模型 - 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;}
}

到目前为止,您不必考虑用户控件/ View 。在您的 SearchView您创建一个 ItemsControl并绑定(bind) ItemsSourceMySearchItems .
<ItemsControl ItemsSource="{Binding MySearchItems}"/> 

你现在看到你所有的 SearchEntryViewmodelsItemsControl(just the ToString() atm) .

为了满足您使用 3Comboboxes 等显示每个 SearchEntryViewmodel 的要求,您只需在资源中定义一个 DataTemplate
<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}">
<StackPanel Orientation="Horizontal">
<Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/>
<!-- the other controls with bindings -->
</StackPanel>
</DataTemplate>

就是这样 :) 而且您永远不必考虑“如何动态添加控件?”。您只需添加新的 SearchEntryViewmodel到您的收藏。

这种方法称为 查看模型优先 我认为这是做 MVVM 最简单的方法。

关于wpf - 在 WPF MVVM 中动态添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11095189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com