【问题标题】:Clear datagrid in MVVM ViewModel清除 MVVM ViewModel 中的数据网格
【发布时间】:2023-03-16 06:21:01
【问题描述】:

在我的 MVVM silverlight 应用程序中,我有一个 dataDrid(在视图中),并且 dataGrid ItemsSource 绑定到 XAML 文件中的域服务类 Sql 存储过程“结果”。存储过程“结果”在 ViewModel 中定义,它在“模型”类上调用 WCF 的存储过程。

当用户单击“清除”按钮时,我需要删除 dataGrid 上的所有项目,但 ViewModel 没有对视图(UserControl)的任何对象引用来重新设置其绑定。

我可以将 dataGrid 的 ItemsSource 设置为 NULL 以擦除 dataGrid 上的所有项目,但我不知道稍后单击“查询”按钮时如何在“ViewModel”中再次进行“绑定”。是否有任何api可以从'ViewModel'中获取'View'中'UserControl'的引用?

感谢您的帮助。

【问题讨论】:

  • 我所知道的是:您的特定视图的视图模型应该负责在您的视图上发布数据 - 您拥有 DataGrid 的位置 - 据我了解,您的视图现在直接连接到已连接的服务到存储过程,绕过您的视图模型不是 MVVM,您应该将服务引用到您的视图模型中,然后将您的视图绑定到视图模型中的集合,希望这会有所帮助
  • 感谢您的回复。我编辑了我的问题,即绑定的“结果”是在 ViewModel 类中定义的,因此我需要 View 的引用来重新绑定 dataGrid 的 ItemsSource。如果 View 直接连接到 WCF 服务,则从后面的代码重新绑定 ItemsSouce 没有问题。似乎大部分代码都从后面的代码移到了 ViewModel,我需要知道如何从“ViewModel”类访问 View 上的一些控件。再次感谢。

标签: silverlight xaml binding mvvm


【解决方案1】:

如果必须清除网格,ViewModel 也应如此。 MVVM 解决方案是清除 ViewModel 中的集合。网格将随之而来。

【讨论】:

  • 感谢您的回复。但是,当用户单击“单击”按钮时,如何触发从 ViewModel 清除集合?我在“ViewModel”上将“Results”设置为 NULL,但直到鼠标光标从“Clean”按钮移开并单击其他控件时,dataGrid 才会清除。再次感谢您的回复。
  • @CHIKUOTANG,将按钮的命令属性绑定到视图模型上的命令。在命令中清除集合(我不会将其设置为 null,而是清空/清除集合)UI 不更新的原因无法从您提供的信息中确定。
猜你喜欢
  • 2018-07-27
  • 2015-04-12
  • 2013-01-06
  • 1970-01-01
  • 2011-05-12
  • 2010-11-03
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多