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 カメラがメッセージを介して通信し、それらを「キャッチ」する必要があるためです。Main View ViewModel モデルを使用しているため、MainWindow.xaml.cs にコードを入力したくありません。

4

1 に答える 1

4

MVVM は、ビュー レイヤーにコードを記述できないとは言いません。ViewModel で Model にアクセスするためのコードを記述し、View と ViewModel の間の接続をできるだけ簡単に (通常はバインディングを使用して) 維持する必要があると言われています。

この場合、ビュー レイヤー コードを記述して、ビュー レイヤーの一部である WndProc にアクセスします。

したがって、私の意見では、あなたのコードは完全に MVVM に準拠しています。

于 2012-04-26T10:18:56.550 に答える