3

我知道将 WPF 特定连接到表示模型是一种反模式。但在这种情况下,我无法避免它(我使用 SLIM DX 进行操纵杆输入,它需要手柄)。

那么有没有办法从演示模型中获取连接到模型的窗口句柄?

谢谢

4

2 回答 2

1

如果我理解,如果您的视图模型是从 Screen 继承的,您可以调用 GetView,将其转换为您的视图类型,然后访问视图上的控件。

var myView = GetView() as OrderView;
myView.SlimDX ...

如果您不想从 VM 中引用您的视图,则可以选择在协程中执行您需要的操作。

“这是一个实现起来相当简单的接口。只需在“Execute”方法中编写代码,并确保在完成后引发“Completed”事件,无论是同步任务还是异步任务。因为协程发生在Action, 我们为您提供了一个 ActionExecutionContext 用于构建与 UI 相关的 IResult 实现。这允许 ViewModel 以声明方式声明其控制视图的意图,而无需对视图的任何引用或基于交互的单元测试的需要。这里是ActionResultContext 的样子:"

public class ActionExecutionContext
{
    public ActionMessage Message;
    public FrameworkElement Source;
    public object EventArgs;
    public object Target;
    public DependencyObject View;
    public MethodInfo Method;
    public Func<bool> CanExecute;
    public object this[string key];
}

http://caliburnmicro.codeplex.com/wikipage?title=IResult%20and%20Coroutines&referringTitle=Documentation

于 2011-05-22T16:39:50.080 回答
0

您有上述两种选择,但还要记住在 OnViewLoaded 被触发之前不会设置句柄,因此请确保在此之后阅读句柄。

于 2011-05-25T22:24:35.590 回答