XDocument 之上的 ViewModel

2024-02-17

我正在开发一个 WPF 应用程序,它有一个表示 XML 的树视图。我将 XML 加载到 XDocument,然后将 TreeView 绑定到该对象。

现在使用MVVM模式 http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx,我想提供一个视图模型在之上X文档。我应该在 ViewModel 类中实现哪些内容?

我在想,

  1. RoutedCommands 绑定到 TreeView 上的 ContextMenu 命令,以允许添加节点、删除节点、修改节点等
  2. 实际修改视图上的属性和节点名称的逻辑。

我的方向正确吗?我还应该做些什么来使其更清晰、模块化,同时易于理解。

我应该使用 RoutedCommands 还是实现 ICommand 接口并创建我的命令? 如何使用 CommandBindings 的附加属性?在我正在谈论的树视图应用程序中这样做有意义吗?我有点不知所措,因为有这么多选项可以实现这一点。

有谁有做这类事情的链接、示例代码吗?参考实现可能是?


我和你在一起。我开始于

(ui) (xml)

其中 xml 表示为 LINQy XElements,因此我收到了 PropertyChange 通知。

然后我添加了一些无状态帮助器类来帮助我处理 xml(公开属性、验证数据等)。我将 XElement 捆绑在 ObservableCollections 中,这样我就可以绑定到它们。

了解 M-V-VM,并决定将我的帮助器类转换为 ViewModel。问题: 辅助类位于数据模型命名空间中,它对 UI 一无所知。 Helper 类知道如何将数据库行转换为 XElement,ViewModel 永远不应该看到这一点。 处理 xml 的帮助程序类。 ViewModel 不应该知道或关心。

所以我实际上正在考虑实施

(ui) (viewmodel) (helper) (xml)

但我只是不愿意在助手中引发 PropChange 事件,而只是在视图模型中重新引发它们。

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

XDocument 之上的 ViewModel 的相关文章

  • WPF:BinaryFormatter 可以序列化 FlowDocument 实例吗?

    我喜欢使用binaryformatter来序列化流文档 但这是例外 Serializable public class BinFlow public FlowDocument my get set BinFlow myBF new BinF
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • 在 Composite WPF (Prism) 中,我应该如何对我的控制器进行单元测试?

    我正在使用一个模块构建一个基本的复合 WPF Shell 我想对我的模块进行单元测试 显然 Composite WPF 以一种易于单元测试的方式模块化我的代码 下面是我想要进行单元测试的代码 它驻留在我的模块的控制器中 请注意标准复合 WP
  • 使用 XAML 文件作为矢量图像源

    我希望能够使用矢量图形 最好在 XAML 中定义 作为图像控件的源 就像我当前可以使用 PNG 等光栅图像一样 这样我就可以轻松地混合和匹配位图和矢量图像 如下所示
  • 当 DataTable 为空时,DataGrid 显示空行

    我有一个DataGrid dg1 绑定到DataTable 数据集 表 代码运行良好并且DataGrid正在显示数据DataTable正确 但是 如果我Clear the DataTable the DataGrid也很清楚 但留下一个空行
  • 在 WPF 媒体元素中连续重播视频

    我有一个在媒体元素中播放的视频文件 我需要继续播放 因此我尝试了 me play me MediaEnded new RoutedEventHandler me MediaEnded 使用此事件方法 loop to keep video p
  • 如何在 WPF 中设置窗口边框和标题栏的样式? [复制]

    这个问题在这里已经有答案了 我们正在开发一个 WPF 应用程序 它使用 Telerik 的控件套件 一切正常且看起来很好 不幸的是 我们最近需要替换所有对话框的基类 将 RadWindow 更改为标准 WPF 窗口 原因与本讨论无关 通过这
  • WPF C# 输入框

    我正在使用 C 构建 WPF 应用程序 我想弹出一个对话框提示用户输入他 她的名字 之后 我将跟踪该名称并将一些数据保存到 txt使用该名称的文件 例如 输入的名称是姓名 约翰 所以我有数据数据 1 2 3 然后我将 数据 保存在John
  • WPF DataGrid 排序后滚动到顶部

    我有一个使用数据网格的 Net 4 0 WPF 应用程序 目前 按列排序后 网格的滚动位置保持在排序前的位置 对于此应用程序 我需要在任何排序后滚动到网格顶部 我尝试过像这样处理排序事件 Private Sub myDataGrid Sor
  • 获取颜色位置的深度,Kinect SDK

    我正在寻找方法 尽快 从 Kinect 相机获取颜色像素的相应深度 我找到了 MapDepthFrameToColorFrame 函数 但这只给我特定深度位置的颜色 我想要相反的颜色 我想要这个的原因是我将能够单击 RGB 图像上的某个位置
  • 是否可以仅突出显示图像的某些部分(不透明度)?

    我已对图像应用了不透明度 这是代码
  • 如何将 WPF 3.0 下构建的应用程序转换为 4.5 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 WPF 3 0 中构建了一个应
  • WPF:在关闭事件触发之前,不会提交对具有焦点的文本框的更改

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

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • WPF Treeview,如何更改缩进

    我的树视图基本上有 文件夹 节点 以及不包含其他项目的项目下面的一层 因此 不需要用于展开 折叠图标的空间 在第 2 层 我可以放弃这个图标空间从而减少缩进吗 项目 在示例 机场 中 应向左移动一些像素 重要提示 基本上是寻找代码解决方案
  • 数据绑定到代码隐藏中的目标 CLR 属性

    在代码隐藏中绑定到依赖属性很容易 你只需创建一个新的System Windows Data Binding对象 然后调用目标依赖对象的SetBinding method 但是 当我们绑定的属性是 CLR 属性并且您无法提供Dependenc
  • 从字节数组创建 BitmapImage

    我正在创建一个包含任意值的字节数组 并希望将其转换为 BitmapImage bi new BitmapImage using MemoryStream stream new MemoryStream data try bi BeginIn
  • WPF 本地化扩展 MVVM 绑定

    我正在尝试绑定在 ViewModel 中声明的名为 SampleName 的属性 这里 SampleName 是关键 但是 当尝试下面的代码时 它显示为空
  • Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

    我有一个带有相关面板的页面 可以根据宽度重新组织 但是 除非宽度 gt 720px 否则它似乎不会在加载时应用任何状态 如果我在加载页面后调整页面大小 则两种状态都有效 解决方法是检查加载页面上的窗口大小并手动选择状态 但我相信这应该自动处
  • 如何在Phone类库项目中添加ResourceDictionary并访问它

    我正在开发一个项目 其中我有一个引用图书馆项目的子项目 在我的库项目 电话类库 中 如何创建 ResourceDictionary xaml 其中我需要添加一些样式并在 xaml 文件和 cs 文件中使用它 我需要访问 xaml 文件中的

随机推荐

  • Rails rake 任务是否提供对 ActiveRecord 模型的访问?

    我正在尝试创建自定义 rake 任务 但似乎我无权访问我的模型 我认为这是 Rails 任务中隐含的内容 我在 lib tasks test rake 中有以下代码 namespace test do task new task do pu
  • Heroku 应用程序(播放)在本地工作正常,然后不保存到服务器上的数据库

    在 Heroku 上使用 Play V2 在本地测试时一切正常 但当我部署到 Heroku 并尝试保存到 PostgreSQL 数据库时 出现以下错误 在我的 Procfile 中有这个 web target start Dhttp por
  • 在 Razor 中使用一个提交按钮提交两个 HTML 表单

    首先 我很抱歉我的英语不好 我是 ASP NET MVC 的新手 目前我正在用它做小型 租车 项目 我想制作一个表单 页面管理员可以在页面上添加汽车 其中包含详细信息 例如name year of production and pictur
  • Java 中的列表、队列和集合

    列表 队列和集合有什么区别 简单来说 A list是对象的有序列表 其中同一对象很可能出现多次 例如 1 7 1 3 1 1 1 5 谈论列表中的 第三个元素 是有意义的 您可以在列表中的任意位置添加元素 更改列表中的任意位置的元素或从列表
  • 在 MATLAB 中保存的 MPEG4 质量

    我需要从加载到 matlab 并编辑 逐帧 的原始 mpeg4 视频中获取 mpeg4 文件以在另一个应用程序中使用 为此 我尝试使用 VideoWriter 将质量设置为 100 newVid VideoWriter outputfile
  • 是什么原因导致 VoiceOver 宣布空组?

    我们有以下 简化的 HTML 真正的 HTML 有点复杂 但是listitem元素是exactly如下面的代码片段所示 div div Foo div div Bar div div Baz div div 当用户向下浏览列表时 Voice
  • 如何在 Swift 中的 UITableViewCell 上添加带有单击事件的按钮?

    在我的主页中 我为 UITableViewCell 创建了一个 xib 文件 我正在从该 xib 文件加载单元格 并且它工作正常 单元格内部有一些标签和按钮 我的目标是通过单击单元格上的按钮来更改标签 我的代码喜欢下面 import UIK
  • android studio 的最低硬件要求?

    我的系统配置 Intel Pentiunm 双核 1 3GHz 2GB RAM 我已经安装了 Android Studio 但它很慢 我是 Android 开发的新手 将 RAM 升级到 4GB 有帮助吗 我有一台具有以下配置的笔记本电脑
  • 是否存在逆向“成员”?红宝石中的方法?

    我经常发现自己在检查某个值是否属于某个集合 据我了解 人们通常使用Enumerable member 为了这 end index member word 1 3 2 然而 这感觉比 Ruby 中的大多数东西不太优雅 我宁愿把这段代码写成 e
  • 由于“CALayer 边界包含 NaN:[nan 0; nan 15.1]”而发生崩溃

    我遇到以下崩溃 CALayerInvalidGeometry CALayerInvalidGeometry CALayer bounds contains NaN nan 0 nan 15 1 这段代码的最后一行 CGRect bounds
  • 使用 numpy 进行元素“in”的 Pythonic 且有效的方法

    我正在寻找一种有效获取布尔数组的方法 其中给定两个大小相等的数组a and b 如果对应的元素为真 则每个元素为真a出现in的对应元素b 例如 以下程序 a numpy array 1 2 3 4 b numpy array 1 2 13
  • ESB MULE 将参数传递给 java 方法

    我使用MULE版本3 3 0 CE 我想从入站标头获取一些值 然后将其传递给java方法 在java方法中对传递的值进行一些更改 最后我再次将其从java方法传递到出站 而不是将 Java bean 绑定到 Mule API 使用Calla
  • 使用 HornetQ 强制消息顺序

    我已经设置了一个 jms 服务器 其中 HornetQ 作为 JMS 提供者 队列 我有一个应用程序充当生产者 另一个应用程序 不同的计算机 充当消费者 我知道 JMS 规范不保证传递的顺序 但我正在寻找一种方法来做到这一点 接收消息exa
  • 如何使用 Python 函数将多个值添加到键中

    class my dict dict init function def init self self dict Function to add key value def add self key value self key value
  • Java 的算术精度更高

    我正在用 Java 构建一个 Web 应用程序 它可以进行数学运算并向用户显示步骤 当使用小数进行基本算术时 我经常会得到准确输出的混乱结果 这是我的问题 double a 0 15 double b 0 01 System out pri
  • 了解 C++ 成员函数模板特化

    我有以下课程 pragma once include
  • 快速访问照片库

    我想在我的应用程序中访问用户照片库中的照片 并且我正在查看 UIImagePickerController 来执行此操作 但是 我想知道是否可以访问和查看照片库中的照片而不实际将这些照片存储在应用程序中 因此基本上该应用程序将存储对所选照片
  • 为什么浏览器会针对不受信任的 SSL 证书显示难看的错误?

    当面对不受信任的证书时 我所知道的每个浏览器都会显示如下的严重错误 Why就是它 这极大地阻碍了 Web 开发人员使用 SSL 这样出色的技术 因为他们担心用户会发现该网站非常可疑 非法 即网络钓鱼 站点在 HTTP 上运行良好 因此不必担
  • 防止 HashMap/HashTable 中出现重复的 对的 Java 代码

    我有一个 HashMap 如下 假设它有 10 0000 个元素 HashMap
  • XDocument 之上的 ViewModel

    我正在开发一个 WPF 应用程序 它有一个表示 XML 的树视图 我将 XML 加载到 XDocument 然后将 TreeView 绑定到该对象 现在使用MVVM模式 http blogs msdn com johngossman arc