带有画布和scrollview的Silverlight缩放区域

Iev*_*ida 3 .net c# silverlight

我有简单的画布与项目,我需要添加滚动视图作为我的画布的父级.但是我在设定之后遇到了问题

canvas.RenderTransform=new ScaleTransform(){...}
Run Code Online (Sandbox Code Playgroud)

Scroolbars没有出现或工作不正确.对任何信息都会感到高兴.

Ant*_*nes 7

渲染变换在UI渲染过程中发生得更晚.它最终对控件渲染执行矩阵变换.滚动查看器将完全不知道此变换,其滚动条将基于原始Canvas的未变换大小.

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>
Run Code Online (Sandbox Code Playgroud)

虽然其Canvas尺寸(150)小于容纳滚动观察器(200),但是它被缩放以使其更大(300).该LayoutTransformer报告其所需的尺寸为300,变换后的画布的大小.因此,ScrollViewer显示滚动条以容纳它.如果没有的益处LayoutTransformerScrollViewer只能看到画布为具有大小150,尽管任何适用的RenderTransform.

  • 你救了我的一天! (3认同)