4

谁能帮帮我吗?我想在 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 中输入代码。

4

1 回答 1

4

MVVM 并不是说​​不能在 View 层写代码。它说您必须编写代码才能访问 ViewModel 中的 Model 并尝试尽可能简单地保持 View 和 ViewModel 之间的连接(通常使用绑定)。

在这种情况下,您正在编写视图层代码以访问作为视图层一部分的 WndProc。

所以在我看来,您的代码完全符合 MVVM。

于 2012-04-26T10:18:56.550 回答