在 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 中动态添加控件 的相关文章

  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • TextBlock TextWrapping 不换行 #2

    好吧 那么this https stackoverflow com questions 6625177 textblock textwrapping not wrapping解决方案没有帮助 XAML 在这里
  • 将字符串数组添加到组合框

    我有一个组合框 我想加载一个从方法返回的字符串数组 我目前只是用 for 循环加载它 但我认为应该可以将字符串数组直接分配给组合框 我只是想改进我的代码 我已经做了一些搜索 并且看到了使用数据范围或数据源的答案 但这些似乎都不起作用 我也尝
  • WPF DataGrid 的 Items 和 ItemsSource 属性之间有什么区别?

    从我从 Intellisense 收集到的信息来看 区别在于返回类型 并且 ItemsSource 有一个 setter 而 Items 只有一个 getter 但实际上 我不明白这两个属性需要彼此分开 而不仅仅是作为一个属性 有人可以向我
  • 如何转换WPF项目以便它可以被单独的exe用作类库

    有没有人尝试过或觉得需要在独立的 exe 中启动应用程序并将 WPF 用作另一个 DLL 而不是在其中包含 Main 方法 我看到的优点是逻辑分离 并且能够在 WPF 代码之外设置工厂等 从而减少程序集依赖性 我已经尝试过这样做并且可以做到
  • 仅最后一个用户控件显示内容控件

    我有一个奇怪的问题 我创建了一个带有标签和画布的用户控件 画布引用资源 但画布仅显示在我的堆栈面板中的最后一个控件上 这是我的窗户
  • 如何在 XAML 和 C# 中将字符串列表显示为 DataGrid(表)

    我已经在 SO 上潜伏了很长时间 直到最近才决定建立一个帐户 我花了很多时间试图解决这个我一直没有询问的问题 但我就在这里 我正在努力实现的目标 我有一个字符串列表 例如 Mango Banana Melon 我们称之为水果 我想将其显示为
  • F# 中的自定义路由事件

    我正在尝试翻译这段 C 代码 https msdn microsoft com en us library ms752288 aspx 到目前为止我的尝试 type MyButtonSimple as self inherit Button
  • wpf 控件宽度绑定

    我有两个带有内容的边框 第二个边框宽度根据情况而变化 在内容上 我试图将第一个边框绑定到第二个边框宽度 但是 它不起作用 我不确定我错过了什么 有人可以给我一些指导吗 下面是我目前正在尝试的示例
  • XAML WPF 如何在 FlowDocument 上添加内嵌背景图像?

    下面的代码是给Flow Document添加背景图片
  • 如何使用C#在WPF上的图像控件中显示位图图像

    我希望当我双击其中的一行时ListView 它应该显示Image对应于该行 该行还包含Image 我尝试了以下但显示相同Image对于所有行 因为我已经给出了特定的路径Image private void ListViewEmployeeD
  • WPF DataGrid - 将 TimeSeries 与 MultiBinding 相结合,丢失更改通知。为什么?

    我有一个具有两个 ObservableCollection 的类 其中 TimeValue 是带有更改通知的自定义日期时间 值配对 通过 INotifyPropertyChanged 我将这些称为 目标 和 实际值 当我将它们绑定到图表时
  • OpenGL:顶点越多,性能越慢

    我正在开发一个程序的一部分 其中给定 xyz 坐标集合 制作 3D 模型 我已经完成了这张图片所需的所有功能 即平移 旋转 缩放 但是给出的 xyz 坐标越多 程序运行速度就越慢 我的程序在处理 29 000 个坐标时运行得非常流畅 但当我
  • MVVM ViewModel 很多属性

    我是 MVVM 新手 正在开发一个应用程序 我有一个包含很多属性的表单视图 大约 50 个 我不能将它们分离到用户控件中 因为这会破坏 mvvm 原则 我无法将它们分成模型 因为它们包含逻辑 属性更改 错误更改这些都不是 poco 类 并且
  • 如何更改每个 DataGrid 行详细信息的行详细信息的 DataTemplate 中的 TextBlock 的文本?

    我有 Datagrid 通过鼠标在每一行中单击显示数据网格行详细信息 这是代码 Microsoft Windows Controls DataGridRow row Microsoft Windows Controls DataGridRo
  • 如何绑定到 DynamicResource 以便可以使用 Converter 或 StringFormat 等? (修订版4)

    注意 这是对早期设计的修订 该设计具有无法在某种样式中使用的限制 从而大大削弱了其有效性 然而 这个新版本现在可以使用样式 本质上是让您可以在任何可以使用绑定或动态资源的地方使用它并获得预期的结果 从而使其更加有用 从技术上讲 这不是一个问
  • WPF 和 ClickOnce

    MSDN 未将 WPF exe 列为 ClickOnce 支持的应用程序类型 ClickOnce 应用程序是任何 Windows Presentation Foundation xbap Windows 窗体 exe 控制台应用程序 exe
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus
  • WPF:在关闭事件触发之前,不会提交对具有焦点的文本框的更改

    我有一个用于编辑数据库信息的 WPF 窗口 它使用实体框架对象表示 当用户关闭窗口时 我想在 Closing 事件中注意到信息是否已更改 并显示一个消息框 提供将更改保存到数据库的信息 不幸的是 在编辑失去焦点之前 对当前焦点编辑的更改不会

随机推荐

  • 针对 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 会为您创建控件 在您的情况下 假设我们