2012-04-26 5 views
3

Может ли кто-нибудь мне помочь? Я хочу использовать WndProc в WPF, но я не хочу, чтобы использовать его в MainWindow.xaml.cs так:Как использовать WndProc в WPF, когда я использую MVVM-модель?

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, я не хочу вводить код в MainWindow.xaml.cs.

ответ

3

MVVM не говорит, что вы не можете писать код в слое «Вид». Он говорит, что вам нужно написать код для доступа к Model в ViewModel и попытаться максимально упростить соединение между View и ViewModel (обычно с привязкой).

В этом случае вы пишете код кода вида для доступа к WndProc, который является частью слоя «Вид».

Так что, на мой взгляд, ваш код отлично совместим с MVVM.

+0

Да, хорошо, спасибо, я дал понять, что это такое: D – Basde

+1

Как сказал Роберто, добавив, что вам может понадобиться переместить любую бизнес-логику, которую WndProc будет направлять или выполнять после захвата сообщения Windows, в вашу ViewModel class – Khaliloz

+0

Я уже сделал это, я просто хочу, чтобы в нем не было никакого кода – Basde

Смежные вопросы