我正在使用ScaleTransform
更改UserControl
上Canvas
的尺寸。它完美无缺,直到我使用ItemsControl控件。
问题是我需要将缩放设为居中,UserControl
不应该“移动”。一旦它在ItemsControl
内,项目在Position
x = 0,y = 0而不是中心上进行缩放。
很高兴知道我做错了什么!
以下是一些XAML显示它不起作用(DataSource中有一个项目,没有什么特别的,它只在窗口上显示一个红色矩形)。
// This slider is used to scale the Grid inside the ItemsControl.
<Slider x:Name="pointResizeSlider" Margin="10,10,10,0" VerticalAlignment="Top" Maximum="7" Value="1"/>
// The items Control.
<ItemsControl Name="icTest" Background="Blue" Width="200" Height="200">
<ItemsControl.ItemTemplate>
<DataTemplate>
// For simplicity I am using a simple 100x100 Grid. This will get scaled.
<Grid Margin="0 0 5 5" Width="100" Height="100" Background="Red">
<Grid.LayoutTransform>
<TransformGroup>
<ScaleTransform
// This would make it pretty obvious, if it would work.
// Shows no effect.
CenterX="1000"
CenterY="1000"
ScaleX="{Binding Path=Value, ElementName=pointResizeSlider}"
ScaleY="{Binding Path=Value, ElementName=pointResizeSlider}" />
</TransformGroup>
</Grid.LayoutTransform>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
修改
在这种情况下使用RenderTransform
,但我必须计算ActualSize
的{{1}}(现在使用UserControl
无法正常工作)。为什么RenderTransform
在这种情况下不起作用?