我需要从演示模型中了解窗口句柄

时间:2011-05-22 14:56:15

标签: wpf mvvm caliburn.micro

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

那么是否有一种方法可以从presenation模型中获取连接到模型的窗口的句柄?

由于

2 个答案:

答案 0 :(得分:1)

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

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

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

“这是一个相当简单的实现接口。只需在”Execute“方法中编写代码,并确保在完成时引发”已完成“事件,无论是同步还是异步任务。因为协同程序发生在Action的内部,我们为您提供了一个ActionExecutionContext,可用于构建与UI相关的IResult实现。这使得ViewModel可以通过声明方式声明控制视图的意图,而无需任何对View的引用或对基于交互的单元的需求测试。这是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

答案 1 :(得分:0)

您有两种选择,但请记住Handle直到没有设置 OnViewLoaded被触发,因此请确保在此之后读取句柄。