我知道它是一种反模式,可以与表示模型建立WPF特定连接。 但在这种情况下我不能避免它(我使用SLIM DX进行操纵杆输入,它需要手柄)。
那么是否有一种方法可以从presenation模型中获取连接到模型的窗口的句柄?
由于
答案 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];
}
答案 1 :(得分:0)
您有两种选择,但请记住Handle直到没有设置 OnViewLoaded被触发,因此请确保在此之后读取句柄。