如何在XAML中对形状进行分组?

时间:2013-10-10 18:39:56

标签: c# xaml windows-8 windows-store

请帮帮我。我有这个:

<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <Grid.RowDefinitions>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="50"/>
    </Grid.ColumnDefinitions>
    <Rectangle x:Name="MyObject" Fill="Red" ManipulationDelta="Object_ManipulationDelta" Height="80" Width="80" ManipulationMode="All">
        <Rectangle.RenderTransform>
            <CompositeTransform/>
        </Rectangle.RenderTransform>
    </Rectangle>
    <Rectangle Fill="Blue" Grid.Row="1">
        <Rectangle.RenderTransform>
            <CompositeTransform/>
        </Rectangle.RenderTransform>
    </Rectangle>
    <Rectangle Fill="Green" Grid.Column="1"/>
    <Rectangle Fill="Yellow" Grid.Row="1" Grid.Column="1"/>
</Grid>

我有函数Object_ManipulationDelta,如果它被拖动,它会改变元素的位置。

  1. 那么,我如何对所有矩形(或其中一些;如数组)进行分组,并使用一个函数Object_ManipulationDelta来改变整个组的位置(如果其中一个被拖动)?在函数中,我使用:var obj = (CompositeTransform)MyObject.RenderTransformTranslateX(和Y)作为对象。
  2. 有没有办法在每个矩形之后不写<Rectangle.RenderTransform...

2 个答案:

答案 0 :(得分:1)

使用x:Name =“name”命名您在代码示例中提到的整个网格,并在此网格上应用转换。或者仅对嵌套网格中的目标矩形进行分组,并对其应用转换。

答案 1 :(得分:0)

Grid等任何Panel都可以进行分组工作。 Grid也有ManipulationDelta事件。 为避免重复复合变换,请将其移动到包含矩形的网格。