<Grid x:Name="LayoutRoot" Height="400" Width="800"
ShowGridLines="True" Background="White">
<Grid.RenderTransform>
<TransformGroup>
<TranslateTransform X="0" Y="10" />
</TransformGroup>
</Grid.RenderTransform>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Canvas x:Name="box1" Grid.Row="0" >
<Canvas.RenderTransform>
<TranslateTransform X="35" Y="10"/>
</Canvas.RenderTransform>
<Rectangle Width="100" Height="100" Fill="Red" Grid.Column="1"/>
</Canvas>
</Grid>
在某些情況下(例如動態排列物件位置)使用Grid元件時,當我們將要將Silverlight元件丟進名為box1的Canvas物件內,並設定其位置到Grid的第1行第2列時(Row=0、Column=1),將物件置入box1後,直接在該物件上設定Grid.Row的屬性將行不通,例如:
<Canvas x:Name="box1" Grid.Row="0" >
<Canvas.RenderTransform>
<TranslateTransform X="35" Y="10"/>
</Canvas.RenderTransform>
<Rectangle Width="100" Height="100" Fill="Red" Grid.Column="1"/>
</Canvas>
以上敘述的Rectangle物件將不會被設定至Grid(0,1)的位置。而是乖乖的待在其所屬的parent Canvas元件的起始位置。
將以上<Grid>內改改變如下:
<Grid x:Name="LayoutRoot" Height="400" Width="800" Background="White">
<Grid.RenderTransform>
<TransformGroup>
<TranslateTransform X="0" Y="10" />
</TransformGroup>
</Grid.RenderTransform>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Canvas x:Name="box1" Grid.Row="1" Grid.Column="1" >
<Canvas.RenderTransform>
<TranslateTransform X="0"/>
</Canvas.RenderTransform>
<Grid ShowGridLines="True" Width="870" x:Name="privateGridBox">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
</Canvas>
</Grid>
將Silverlight元件置於在上敘box1元件的<Grid>內,可正常使用Grid功能。
沒有留言:
張貼留言