OK、LayoutTransform と ScaleTransform を使用して、UI 要素のグリッドをズームする方法を理解しました。私が理解していないのは、View を CTRL+MouseWheelUp\Down に応答させる方法と、コードを MVVM パターンに適合させる方法です。
私の最初のアイデアは、ZoomFactor をプロパティとして保存し、それを調整するコマンドにバインドすることでした。
私は次のようなものを見ていました:
<UserControl.InputBindings>
<MouseBinding Command="{Binding ZoomGrid}" Gesture="Control+WheelClick"/>
</UserControl.InputBindings>
しかし、2つの問題があります:
1) ホイールが上に移動したか下に移動したかを判断する方法はないと思います。MouseWheelEventArgs.Delta を見たことがありますが、取得方法がわかりません。
2) ビューモデルのコマンドへのバインドは、厳密にはビューのものであるため、正しくないようです。
ズームは厳密には UI View のみなので、実際のコードはコード ビハインドに入れる必要があると考えています。
皆さんはこれをどのように実装しますか?
ps、MVVMにCinchを使用して.net\wpf 4.0を使用しています。