在DataTemplate中,ScaleTransform无效

时间:2015-05-18 12:56:25

标签: c# wpf

我正在使用ScaleTransform更改UserControlCanvas的尺寸。它完美无缺,直到我使用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在这种情况下不起作用?

0 个答案:

没有答案
相关问题