如何防止网格';s的孩子不会缩放

本文关键字:孩子 缩放 何防止 网格 | 更新日期: 2023-09-27 17:52:16

使用Slider缩放ItemsControl。问题是ThumbBorderThickness的缩放方式使得BorderThickness变得太薄且几乎不可见或太厚。Thumb s也是如此。

如何在允许Grid缩放的同时防止ThumbBorderThickness缩放?

我想也许可以使用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"
    />

如何防止网格';s的孩子不会缩放

我相信,将逆变换应用于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>