我在一些面板中嵌套了一些控件。 面板本身在窗口内没有相同的x位置。
我希望面板内的控件相对于窗口具有固定位置,而不是面板(因此它们都垂直排列,在这种情况下)。
要明确的是,小组本身在窗口中有任意立场。可以想象,用户应该能够影响面板位置,但嵌套控件将坚持相对于窗口的相同X坐标。
我认为我不能使用Canvas,因为它是相对于画布边缘的定位。
有什么想法吗?
非常感谢。
答案 0 :(得分:1)
请勿使用Panel
...而是使用Grid
s。如果您使用Grid
,那么您可以利用Grid.IsSharedSizeScope
Attached Property和ColumnDefinition.SharedSizeGroup
Property。使用这些列表,您可以将来自不同Grid
的列排成一行,只要您有Grid
属性设置为true的父IsSharedSizeScope
。
以下是MSDN上第一个链接页面的示例:
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Grid ShowGridLines="True" Margin="0,0,10,0">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="FirstColumn"/>
<ColumnDefinition SharedSizeGroup="SecondColumn"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
</Grid.RowDefinitions>
<Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0" Width="200" Height="100"/>
<Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0" Width="150" Height="100"/>
<TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
</Grid>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="FirstColumn"/>
<ColumnDefinition SharedSizeGroup="SecondColumn"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
</Grid.RowDefinitions>
<Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0"/>
<Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0"/>
<TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
</Grid>
</StackPanel>