Silverlight视图框调整大小时未绘制的项目

Silverlight视图框调整大小时未绘制的项目,silverlight,canvas,redraw,viewbox,Silverlight,Canvas,Redraw,Viewbox,我目前正在Silverlight中设计一个布局应用程序,在视图框中有一个画布。我将形状添加到画布中,它们会正确显示,当我调整viewbox的大小以2倍的高度和宽度放大时,所有的东西都会正确绘制 当我尝试放大系数4或更大,或放大系数0.5(缩小)时,就会出现问题 更新:水平线仍然存在,只是没有绘制。其他形状和消失形状之间的相互作用仍然存在 当我这样做时,任何水平线都不会重画,但任何其他形状,其他垂直线,仍然会重画。对象仍然是画布的子对象,它们的可见性都设置为可见 发生了什么事 更新 非常简单的XA

我目前正在Silverlight中设计一个布局应用程序,在
视图框中有一个
画布
。我将形状添加到画布中,它们会正确显示,当我调整viewbox的大小以2倍的高度和宽度放大时,所有的东西都会正确绘制

当我尝试放大系数
4
或更大,或放大系数
0.5
(缩小)时,就会出现问题

更新:水平线仍然存在,只是没有绘制。其他形状和消失形状之间的相互作用仍然存在

当我这样做时,任何水平线都不会重画,但任何其他形状,其他垂直线,仍然会重画。对象仍然是画布的子对象,它们的可见性都设置为可见

发生了什么事

更新
非常简单的XAML:

<ScrollViewer x:Name="scrollViewer" 
              Padding="0"
              ScrollViewer.VerticalScrollBarVisibility="Auto"
              ScrollViewer.HorizontalScrollBarVisibility="Auto"
              IsTabStop="False"
              Background="Beige">
    <Viewbox x:Name="viewBox" Stretch="UniformToFill">
        <Canvas x:Name="designCanvas"  
                Background="{Binding ElementName=mainControl, Path=Background, Mode=TwoWay}">
        </Canvas>
    </Viewbox>
</ScrollViewer>
要放大:

       viewBox.Width *= 2;
       viewBox.Height *= 2;

为什么不使用该类进行放大和缩小。

很好,但该代码无法工作Canvas.horOffset、Canvas.vertOffset和Canvas.zoomFactor不作为画布属性存在。这些属性是我必须在程序中处理的其他内容,它们可以替换为scrollviewer的水平和垂直滚动偏移。Zoomfactor是乘法的,具体取决于缩放量。这只是将位置设置到我想要的位置,我认为这与这个问题无关,因为位置似乎与未重新绘制的项目无关。您是否考虑过在画布上进行缩放变换而不是viewbox?我没有,与viewbox相比,这有什么好处,似乎除了使用简单的视口,还需要进行更多的计算?
       viewBox.Width *= 2;
       viewBox.Height *= 2;