0

请帮帮我。我有这个:

<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在其中一个被拖动时使用一个函数来更改整个组的位置?在函数中,我使用 this: var obj = (CompositeTransform)MyObject.RenderTransformand TranslateX(and Y) for obj.
  2. 有没有办法<Rectangle.RenderTransform...在每个矩形之后不写?
4

2 回答 2

1

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

于 2013-10-10T19:00:15.737 回答
0

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

于 2013-10-10T18:57:01.440 回答