【问题标题】:How to access control in viewmodel如何在视图模型中访问控制
【发布时间】:2014-03-17 18:20:51
【问题描述】:

我的应用程序在 WPF、VS 2010 PRISM 和 Unity 中。当 Adorner 的构造函数初始化时,我想在 viewmodel 中访问 Views Dockpanel 控件。任何帮助,将不胜感激。

【问题讨论】:

  • 您好,您访问控件的方式是通过绑定,并且 UI 不应渗入 ViewModel。所以实现它的方法是创建属性并将它们绑定到您尝试的 Adorner 属性。
  • 我同意@Oakcool。在ViewModel 中不应直接引用View 中的控件。使用您需要在 DockPanel 控件中获取的具体数据添加您的问题。
  • @Oakcool- 命令参数会好吗?
  • @Lucky CommandParameter 用于命令中,所以基本上当你有一个按钮时,你可以绑定一个命令,你可能会使用 CommandParameters

标签: wpf unity-container prism


【解决方案1】:

是的。正确的回答是你不要。在 MVVM 中,VM 应该完全不了解 View。您应该将视图绑定到视图模型。

但是,在某些情况下,这种模式/模型当然会失效。此时可以考虑使用MVPVM pattern *。可以访问视图的类称为 Presenter。

*说真的,我什至不是在开玩笑。此链接是 Microsoft 杂志链接。

【讨论】:

    【解决方案2】:

    简单的方法是你可以解析 IUnityContainer 的 View 并可以像这样访问控制:

    readonly IUnityContainer _container;
    
    public CONSTRUCTOR(IUnityContainer container)
    {
        _container=container;
        var resolved = _container.Resolve<IEmployeeView>();
    
        // cast your resolved view as View.
        var views = resolved as YOURVIEWNAME;
    
        // and get control.
        var controls = views.YOURDOCPANELNAME;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2012-08-23
      • 2012-07-18
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多