在 WPF MVVM 中动态添加控件

2024-01-18

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

我该怎么做呢?


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

到目前为止,您不必考虑用户控件/视图。在你的SearchView你创建一个ItemsControl并绑定ItemsSource to MySearchItems.

<ItemsControl ItemsSource="{Binding MySearchItems}"/> 

你现在看到你所有的SearchEntryViewmodels in the ItemsControl(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 最简单的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WPF MVVM 中动态添加控件 的相关文章

随机推荐

  • 针对 XSD 的 XML 验证:元素必须没有字符或元素信息项

    为什么我的 XML 无法根据以下 XSD 进行验证 我的 XML 文件是这样的
  • 如何在模块中导入 lib 文件夹

    我有一个 GAE 应用程序 其中包含三个模块和一个 lib 文件夹 当我尝试从 lib 文件夹导入第 3 方库时 GAE 弹出导入错误 我可以通过将 lib 符号链接到 Module 1 lib 和 Module 2 lib 并在每个模块中
  • 使用 axios 从 React 前端启用 CORS?

    我在前端使用 React 并且从我不拥有的另一个域调用 API 我的 axios 请求 axios requestURL method GET headers Access Control Allow Origin Content Type
  • 我的工具栏在 API 级别 19 (Kitkat) 上不显示,而在 API 级别 21 上显示

    我的代码没有在 Kitkat 上显示工具栏 这是我针对两个 Android 版本的屏幕截图 奇巧版本 棒棒糖版本 这背后的原因可能是什么 清单文件
  • Java 7u51不接受带有自签名证书的JNLP?

    我在网上看到Java版本7u51 将于2014年1月发布 将不再接受我自签名的Java Webstart应用程序 真的吗 如果这是真的 我是否有机会为我的 JNLP 申请构建一个解决方法 以便我即使在 2014 年 1 月之后也能够启动该申
  • Ansible concat vars 到字符串

    我花了一天的大部分时间试图解决这个问题 但到目前为止都失败了 我正在构建一些剧本来自动化 Splunk 中的功能 并尝试将清单组中的主机列表转换为 E G search head 1 2 3 4 5 6 7 8 我从该剧的调试输出中获得的预
  • 是否可以在 setup.py 中表达特定于平台的依赖项,而无需构建特定于平台的 Egg 版本?

    我们有一个占位符 Egg 它不包含任何代码 其存在的目的只是为了从 PyPi 存储库中提取依赖包列表 大多数这些依赖包与平台无关 但有些仅在 Win32 平台上使用 是否有可能以某种方式使依赖项成为有条件的平台 以便我的给定依赖项insta
  • 幕后:ORM 如何“思考”?

    我对 Rails ActiveRecord PHP Doctrine 以及类似的 ORM 背后的一些设计感兴趣 ORM 如何设法实现链式访问器等功能以及它们通常期望工作的深度 ORM 如何在内部构造查询 ORM 如何管理查询 同时维持所有预
  • javascript 设置标头 Access-Control-Allow-Origin [重复]

    这个问题在这里已经有答案了 我正在用 POST 测试 JS 但我并没有取得成功 使用代码 div testing js div
  • GCC 内联汇编:约束

    我很难理解 GCC 内联汇编 x86 中的角色约束 我有阅读手册 http gcc gnu org onlinedocs gcc Constraints html Constraints 它准确地解释了每个约束的作用 问题是 尽管我了解每个
  • 如何使用 Firebase Cloud Functions Storage 创建文件夹

    我怎样才能制作文件夹 帖子 存储桶 gt gs app appspot com posts code exports generateThumbnail functions storage object onChange event gt
  • 如何在 iOS 应用程序中使用 Fabric 注销 Twitter

    共享实例注销不起作用 我知道这对开发人员来说是一个大问题 有没有人有办法解决吗 谢谢 大约三个月前我遇到了这个问题 现在刚刚找到了解决方案 显然 清除 cookie 实际上会删除 Twitter 为之前登录的用户存储的信息 下面的代码对我有
  • 当对象穿过路径时,对路径进行动画处理的最简单方法是什么?

    考虑一个穿过长线性路径的矩形 弄清楚形状在动画早期的位置会很有用 在形状移动之前显示整个路径不是我想要的 通过将路径添加到窗格中可以轻松完成此操作 我想要在形状后面有一条尾线 代表该形状迄今为止所经过的路径 有谁知道如何在 Javafx 中
  • JDK7 中菱形接口的意外行为

    我的 JSF 托管 bean 中有一个属性 private List
  • Android ImageView 设置 Bitmap FitXY 不起作用

    我已经尝试了很长时间来设置位图 使其适合ImageView界限 它只是不起作用scaleType fitXY 我的位图图像尺寸小于ImageView的 保存为 100X100 像素 我希望我的位图图像适合并拉伸到ImageView 这是一些
  • 如何设置 dll 的入口点

    首先 我认为 dll DLLMain 中的入口点 但是当我尝试在 C 中导入它时 我收到一个错误 找不到入口点这是我的代码 include
  • 不使用 Apache POI 解析 Excel 文件

    我知道我们可以使用 Apache POI 来解析 Excel 文件并获取数据 但我听说一个奇怪的事情 Excel 文件可以以与我们解析 CSV 类似的方式传递 就像从文件流中读取文件并用 逗号 分隔符分隔每个列值 当我们解析Excel时 我
  • 默认 Java 密钥库包含哪些密钥?

    我了解默认的 Java 信任库包含根证书和其他与信任相关的证书 但是 默认 Java 密钥库中存储了哪些密钥 据我所知 密钥库用于 在 SSL 握手期间应将哪些身份验证凭据发送到远程主机进行身份验证 如果您是 SSL 服务器 您将在密钥交换
  • Solr (JVM) 每小时峰值

    SOLVED 在我们的例子中 问题是 SuggestRequestHandler requestHandler name suggest 现在已经设置了facelimit 10 此外 应用程序提出的每个建议请求都有多个请求 为什么这会导致
  • 在 WPF MVVM 中动态添加控件

    我正在开发一个动态搜索视图 其中单击按钮应添加一个包含 3 个组合框和 2 个文本框的新行 我该怎么做呢 如果您真的想做 mvvm 请尝试忘记 如何添加控件 您不必这样做 只需考虑您的视图模型 WPF 会为您创建控件 在您的情况下 假设我们