如何防止网格';s的孩子不会缩放
本文关键字:孩子 缩放 何防止 网格 | 更新日期: 2023-09-27 17:52:16
使用Slider
缩放ItemsControl
。问题是Thumb
和BorderThickness
的缩放方式使得BorderThickness
变得太薄且几乎不可见或太厚。Thumb
s也是如此。
如何在允许Grid
缩放的同时防止Thumb
和BorderThickness
缩放?
我想也许可以使用Converter
来重新缩放Border
的厚度BorderThickness="{Binding ElementName=MyItemsControl, Converter={StaticResource descaleConverter}}"
但是CCD_ 13仅被应用一次并且当CCD_。
有什么想法吗?
<ItemsControl ItemsSource="{Binding Segments}" x:Name="MyItemsControl">
<ItemsControl.LayoutTransform>
<ScaleTransform
ScaleX="{Binding ElementName=scaleSlider,Path=Value}" />
</ItemsControl.LayoutTransform>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding Duration}" Height="100">
<Grid Opacity="0">
<local:ResizeThumb Height="6" Cursor="SizeNS" VerticalAlignment="Top" HorizontalAlignment="Stretch" />
<local:ResizeThumb Width="6" Cursor="SizeWE" VerticalAlignment="Stretch" HorizontalAlignment="Left" />
<local:ResizeThumb Width="6" Cursor="SizeWE" VerticalAlignment="Stretch" HorizontalAlignment="Right" />
</Grid>
<Grid IsHitTestVisible="False">
<Border BorderThickness="1,1,1,0" BorderBrush="Black" />
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Slider
x:Name="scaleSlider"
Value="1" Minimum="0.01" Maximum="4"
/>
我相信,将逆变换应用于DataTemplate的子网格将达到您想要的效果,或者有望为您指明正确的方向。
<DataTemplate>
<Grid Width="{Binding Duration}" Height="100">
<Grid Opacity="0" LayoutTransform="{Binding ElementName=MyItemsControl, Path=LayoutTransform.Inverse}">
<local:ResizeThumb Height="6" Cursor="SizeNS" VerticalAlignment="Top" HorizontalAlignment="Stretch" />
<local:ResizeThumb Width="6" Cursor="SizeWE" VerticalAlignment="Stretch" HorizontalAlignment="Left" />
<local:ResizeThumb Width="6" Cursor="SizeWE" VerticalAlignment="Stretch" HorizontalAlignment="Right" />
</Grid>
<Grid IsHitTestVisible="False"
LayoutTransform="{Binding ElementName=MyItemsControl, Path=LayoutTransform.Inverse}">
<Border BorderThickness="1,1,1,0" BorderBrush="Black" />
</Grid>
</Grid>
</DataTemplate>