我想要得到的是对控件集合进行缩放但保留此控件子集的宽度、高度和位置的任何方式。我已经看到了如何在 WPF 放大和缩小时保持元素大小的问题?,似乎非常符合我的要求,但没有得到回答,也不是很明确,所以会改进这个问题。
目前我正在使用扩展为 .net 框架 4.0 的 WPF 工具包附带的 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 的缩放转换,我想可能是在放大时执行此操作的一种方法,将缩小到要保持大小的控件,反之亦然。
特定行为的一个示例是混合设计器,例如,当您放大具有行和列的网格时,列指示器保持原始大小,类似的东西是我想要的点和路径。
我会欣赏任何解决方案,可能是库、附加属性、行为或代码。谢谢