2013-10-10 3 views
0

Помогите мне, пожалуйста. У меня есть это:Как группировать фигуры в XAML?

<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.RenderTransform и TranslateX (и Y) для объекта.
  2. Есть ли способ не писать <Rectangle.RenderTransform... после каждого прямоугольника?

ответ

1

Назовите всю сетку, указанную в примере кода, с помощью x: Name = "name" и примените преобразование на этой сетке. Или группируйте только целевые прямоугольники во вложенной сетке и применяйте к ней преобразование.

0

Любая панель, такая как сетка, может выполнять групповое задание. Сетка имеет событие ManipulationDelta. Чтобы избежать дублирования Composite transform, переместите его в сетку, содержащую прямоугольники.

Смежные вопросы