【发布时间】: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