C# 带画布和滚动视图的Silverlight缩放区域

C# 带画布和滚动视图的Silverlight缩放区域,c#,.net,silverlight,C#,.net,Silverlight,我有带项目的简单画布,我需要添加滚动视图作为画布的父级。 但在赛后我遇到了一个问题 canvas.RenderTransform=new ScaleTransform(){...} Scroolbars未出现或工作不正常。 将很高兴获得任何信息。在UI渲染过程中,渲染转换发生得要晚得多。它最终对控件渲染执行矩阵变换。滚动查看器将完全不知道此转换,其滚动条将基于原始画布的未转换大小 silverlight工具箱包含一个LayoutTransformer控件。作为布局过程的一部分,此控件将变换应用

我有带项目的简单画布,我需要添加滚动视图作为画布的父级。 但在赛后我遇到了一个问题

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>

虽然
画布
的大小(150)小于包含的滚动查看器(200),但它被缩放以使其更大(300)。
LayoutTransformer
将其所需大小报告为300,即画布的变换后大小。因此,ScrollViewer显示滚动条来容纳它。没有
LayoutTransformer
的好处,
ScrollViewer
只会将画布视为大小为150,而不管是否应用了任何RenderTransform