我在Silverlight 5中创建设计环境,用户可以从位于屏幕左侧的面板拖放一些项目。用户还可以通过鼠标和滚动条缩放/平移场景。 Canvas有一个TranslateTransform,它在平移场景时被操纵,但我不希望我的UI元素被淘汰。如何排除这些元素不受平移过程的影响?
我在XAML中使用以下Canvas变换:
<Canvas.RenderTransform>
<TransformGroup x:Name="transformGroup">
<ScaleTransform x:Name="CanvasScale" ScaleX="1.0" ScaleY="1.0"></ScaleTransform>
<TranslateTransform x:Name="CanvasPan" ></TranslateTransform>
</TransformGroup>
</Canvas.RenderTransform>
然后我在代码中更改CanvasScale和CanvasPan来缩放/平移场景,但是所有对象(包括UI元素)都受到影响,我的场景有点复杂,所以我认为最好的(或唯一的)方法是排除UI元素从这些转变。
答案 0 :(得分:1)
好的,现在我认为我知道你的意思,你想要做的事情是非常轻松的,只需使用DOM
中的对象组织来反映你想要的结构就可以完成。所以在你的情况下它会是这样的(以伪为例)
<Grid>
<!-- Your Canvas -->
<Canvas>
<Canvas.RenderTransform>
<TransformGroup x:Name="transformGroup">
<ScaleTransform x:Name="CanvasScale" ScaleX="1.0" ScaleY="1.0"/>
<TranslateTransform x:Name="CanvasPan"/>
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>
<!-- Your UI elements -->
<StackPanel Orientation="Horizontal">
<Button/>
<TextBlox/>
<CheckBox/>
</StackPanel>
</Grid>
然后通过这种方式,您基本上只是将这些UI元素浮动到DOM
树中的其他内容上,从而为您提供所需的效果。
希望这会有所帮助,欢呼。