2012-04-26 110 views
3

任何人都可以帮我吗? 我想在WPF中使用的WndProc,但我不希望使用它在MainWindow.xaml.cs这样的:当我使用MVVM模型时如何在WPF中使用WndProc?

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通过消息进行通信,我需要“捕捉”它们。因为我使用的是Main View ViewModel Model,所以我不想将代码输入到MainWindow.xaml.cs中。

回答

3

MVVM不说你不能在View层编写代码。它说你必须编写代码来访问ViewModel中的Model,并尽量保持View和ViewModel之间的连接(通常使用绑定)。

在这种情况下,您正在编写视图层代码以访问属于View层的WndProc。

所以我认为你的代码完全符合MVVM。

+0

是的好的谢谢然后我让它如何:D – Basde 2012-04-26 10:56:22

+1

正如罗伯托所说,此外,你可能想要将任何业务逻辑,WndProc将指挥或捕获Windows消息后执行您的ViewModel – Khaliloz 2012-04-26 11:19:46

+0

我已经这样做了,我只想在那里没有代码 – Basde 2012-04-26 11:34:10

相关问题