WPFToolkit の WPF DataGrid を使用していますが、データグリッド全体をズームしようとすると問題が発生します。私の最初の考えは、非常に簡単で、スケール変換をグリッドに適用し、使用されたボタンがクリックされたときに ScaleX、ScaleY プロパティをアニメーション化するだけだということでした。ただし、スクロールバーがズームインされて大きくなったため、これは機能しませんでした。データグリッドに固定ヘッダーと固定列が必要なので、スクロールを処理するためにデータグリッドの外でスクロールビューアーを単純に使用することはできません。私が試した2番目のことは、グリッドのフォントサイズを拡大縮小することでしたが、フォントサイズを縮小しても列が元の幅のままで縮小しないため、これは失敗しました。
最後に、データグリッドのビュー ツリーに入り、スクロール コンテンツ プレゼンターにスケール変換を追加する以下のコードを使用して、それが機能していると思いました。(このコードにも示されていませんが、同様にスケーリングされるように、同じ方法でヘッダーのビジュアル ツリー アイテムに変換を適用します)。ズーム後に水平スクロールをテストするまで、これはうまく機能していると思いました。(垂直スクロールは完全に機能します。)ズームする前は水平スクロールは問題ありませんが、ズーム後、水平にスクロールすると表示が異常になります。それが何をしているのかを正確に伝えるのは難しいですが、画面の左側からスクロールしているコンテンツが「折りたたまれて」左側に戻ってきているように見えます. たぶん、左側ですべてが粉砕されています。どうすればこれを機能させることができるか、誰にもアイデアがありますか?
ScrollContentPresenter sp = (ScrollContentPresenter)
VisualTreeHelper.GetChild(
VisualTreeHelper.GetChild(
VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(dgMatrix, 0), 0), 0),2);
ScaleTransform st = new ScaleTransform(1, 1);
sp.LayoutTransform = st;
DoubleAnimation a = new DoubleAnimation();
a.By = 1.5;
a.AutoReverse = false;
a.Duration = new Duration(TimeSpan.Parse("0:0:0.25"));
st.BeginAnimation(ScaleTransform.ScaleXProperty, a);
st.BeginAnimation(ScaleTransform.ScaleYProperty, a);