谁能帮帮我吗?
我想在WPF中使用WndProc,但我不想在MainWindow.xaml.cs中使用它,如下所示:
public MainWindow()
{
InitializeComponent();
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
source.AddHook(WndProc);
_windowHandle = source.Handle.ToInt32();
}
我想在不同的类中使用它的原因是uEye相机通过消息进行通信,我需要“捕获”它们.因为我使用的是主视图ViewModel模型,所以我不想在MainWindow.xaml.cs中输入代码.
解决方法:
MVVM并没有说你不能在View层中编写代码.它说你必须编写代码来访问ViewModel中的Model并尝试尽可能简单地保持View和ViewModel之间的连接(通常使用绑定).
在这种情况下,您将在视图层代码中编写以访问作为View层一部分的WndProc.
因此,在我看来,您的代码完全符合MVVM标准.