3
我有简单的画布和项目,我需要添加滚动视图作为我的画布的父项。 但我fased与设置后Silverlight放大画布和滚动视图的区域
canvas.RenderTransform=new ScaleTransform(){...}
Scroolbars不出现或正常工作没有问题。 对任何信息感到高兴。
我有简单的画布和项目,我需要添加滚动视图作为我的画布的父项。 但我fased与设置后Silverlight放大画布和滚动视图的区域
canvas.RenderTransform=new ScaleTransform(){...}
Scroolbars不出现或正常工作没有问题。 对任何信息感到高兴。
渲染变换在UI渲染过程中发生得很晚。它最终在控件渲染上执行矩阵变换。滚动查看器将完全不知道这种转换,其滚动条将基于原始画布的未转换大小。
silverlight工具包包含LayoutTransformer
控件。此控件将转换作为布局过程的一部分应用于其内容,并将后转换大小报告为其所需大小。
考虑一下: -
<ScrollViewer Width="200" Height="200" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<toolkit:LayoutTransformer>
<toolkit:LayoutTransformer.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2" />
</toolkit:LayoutTransformer.LayoutTransform>
<Canvas Width="150" Height="150" Background="Aquamarine">
<Rectangle Fill="Blue" Canvas.Top="10" Canvas.Left="10" Width="30" Height="30" />
</Canvas>
</toolkit:LayoutTransformer>
</ScrollViewer>
虽然Canvas
的尺寸(150),比含滚动查看器(200)时,它被标定,因此,这将是较大的(300)。 LayoutTransformer
将其所需的大小报告为300,即画布的转换后大小。因此ScrollViewer显示滚动条以适应它。如果没有LayoutTransformer
的好处,ScrollViewer
将只能看到Canvas的大小为150,尽管应用了RenderTransform。
你救了我的一天! – Evgeny 2011-02-14 08:58:13