私が取得したいのは、コントロールのコレクションをズームする方法ですが、このコントロールのサブセットの幅、高さ、および位置を維持することです。WPF のズームインとズームアウト中に要素のサイズを維持するにはどうすればよいですか?という質問を見てきました。、私が望むものに非常に似ていますが、答えられておらず、あまり明確ではないため、質問を改善します。
現在、.net Framework 4.0 用に拡張された WPF Toolkit に付属の Zoombox コントロールを使用していますが、これは変更できます。私が持っている構造は次のとおりです。
<Border x:Name="drawRegionBorder" Grid.Column="1" Grid.Row="1" d:LayoutOverrides="Width, Height" BorderThickness="1" CornerRadius="4" BorderBrush="{StaticResource BorderBrush}" >
<xctk:Zoombox x:Name="zoomBox">
<Grid x:Name="drawRegion" Height="{Binding Height}" Width="{Binding Width}" HorizontalAlignment="Left" VerticalAlignment="Top" Background="{DynamicResource DrawBackgroundBrush}">
<Image Source="{Binding Image}" ... />
<ListBox x:Name="points" ItemsSource="{Binding Points}">
<ListBox.Template>
<ControlTemplate>
<Canvas IsItemsHost="True"/>
</ControlTemplate>
</ListBox.Template>
</ListBox>
<ListBox x:Name="paths" ItemsSource="{Binding SomePaths}">
<ListBox.Template>
<ControlTemplate>
<Canvas IsItemsHost="True"/>
</ControlTemplate>
</ListBox.Template>
</ListBox>
<!--... Others ...-->
</Grid>
</xctk:Zoombox>
</Border>
ここにあるのは、グリッド内のいくつかのリスト ボックスで、各リスト ボックスのアイテム パネルはキャンバスであるため、各子 (ただし画像) はキャンバス内に配置され、各子はプロパティCanvas.X
とCanvas.Y
プロパティを設定します。だから私が欲しいのは、ズーム(ズームインまたはズームアウト)を行い、ポイント(楕円)またはパスのサイズを維持する方法です...
ズームのため、wpf のスケール変換です。ズームイン時にこれを行う方法で、サイズを維持したいコントロールにズームアウトし、その逆も可能だと思います。
予想される動作の例は、ブレンド デザイナーです。たとえば、行と列を含むグリッドをズームインすると、列インジケーターは元のサイズを保持します。そのようなものが、ポイントとパスに必要なものです。
解決策、おそらくライブラリ、添付プロパティ、動作、またはコードに感謝します。ありがとう