【问题标题】:How to group shapes in XAML?如何在 XAML 中对形状进行分组?
【发布时间】:2013-10-10 18:39:56
【问题描述】:

请帮帮我。我有这个:

<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)用于 obj。
  2. 有没有办法不在每个矩形后面写&lt;Rectangle.RenderTransform...

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多