Windows 8 XAML布局问题-屏幕右侧的定位控件
我正在努力理解xaml控件如何帮助我完成以下布局: 我有一个三列布局。最左边和中间的列都有列表视图。最右边的列只有一个可单击(可点击)的堆栈面板,可以在其他地方导航。我希望这个stackpanel被锚定在页面的右侧,中间向下(即在CSS中,我会说right:0,top:50%) 我的XAML在下面。我的策略是创建一个包含所有3列的水平父stackpanel,以及一个垂直stackpanel,在最左边和中间的列中的listview控件顶部有一个textblock。但是,第三个stackpanel以一些意外的方式运行:Windows 8 XAML布局问题-屏幕右侧的定位控件,xaml,layout,windows-store-apps,Xaml,Layout,Windows Store Apps,我正在努力理解xaml控件如何帮助我完成以下布局: 我有一个三列布局。最左边和中间的列都有列表视图。最右边的列只有一个可单击(可点击)的堆栈面板,可以在其他地方导航。我希望这个stackpanel被锚定在页面的右侧,中间向下(即在CSS中,我会说right:0,top:50%) 我的XAML在下面。我的策略是创建一个包含所有3列的水平父stackpanel,以及一个垂直stackpanel,在最左边和中间的列中的listview控件顶部有一个textblock。但是,第三个stackpanel以
<!--
This grid acts as a root panel for the page that defines two rows:
* Row 0 contains the back button and page title
* Row 1 contains the rest of the page layout
-->
<Grid Style="{StaticResource LayoutRootStyle}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1160"/>
<ColumnDefinition Width="206"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="140"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Back button and page title -->
<Grid Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
<TextBlock x:Name="pageTitle" Grid.Column="1" Text="{StaticResource AppName}" Style="{StaticResource PageHeaderTextStyle}"/>
</Grid>
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Stretch" Grid.ColumnSpan="2">
<StackPanel
Orientation="Vertical"
Margin="0,0,40,0">
<StackPanel
Height="100"
Width="400"
HorizontalAlignment="Left"
Margin="40,15,0,0">
<StackPanel.Background>
<SolidColorBrush>
<Color>#FFFFFF</Color>
</SolidColorBrush>
</StackPanel.Background>
<TextBlock
Text="Announcements"
FontSize="42"
FontWeight="Light"
TextAlignment="Left"
Padding="0,25,25,25">
</TextBlock>
</StackPanel>
<ListView
HorizontalAlignment="Left"
Height="475"
Margin="40,15,0,0"
VerticalAlignment="Top"
Width="400"
ItemsSource="{Binding Incidents}"
IsItemClickEnabled="True"
SelectionMode="None"
ItemTemplate="{StaticResource Standard130ItemTemplate}"
ItemClick="Item_Click" >
</ListView>
</StackPanel>
<StackPanel
Orientation="Vertical"
Margin="40,0,0,0">
<StackPanel
Height="100"
Width="600"
HorizontalAlignment="Right"
Margin="0,15,40,0">
<StackPanel.Background>
<SolidColorBrush>
<Color>#FFFFFF</Color>
</SolidColorBrush>
</StackPanel.Background>
<TextBlock
Text="News from Yammer"
FontSize="42"
FontWeight="Light"
TextAlignment="Left"
Padding="0,25,25,25">
</TextBlock>
</StackPanel>
<ListView
HorizontalAlignment="Left"
Height="475"
Margin="40,15,0,0"
VerticalAlignment="Top"
Width="Auto"
ItemsSource="{Binding Incidents}"
IsItemClickEnabled="True"
SelectionMode="None"
ItemTemplate="{StaticResource Standard130ItemTemplate}"
ItemClick="Item_Click" >
</ListView>
</StackPanel>
<StackPanel Background="AliceBlue" Width="206" Height="628">
<TextBlock x:Name="stackPanel" Background="Black" Height="50" Width="20" HorizontalAlignment="Right" Margin="10,100,10,0" Opacity="0"/>
</StackPanel>
</StackPanel>
#FFFFFF
#FFFFFF
堆叠面板仅根据需要为其子元素提供足够的空间。我建议如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<!-- Right most column -->
</StackPanel>
</Grid>
这是堆叠面板,可拉伸以适合立柱。太棒了,谢谢奈杰尔!很抱歉耽搁了这么久,我已经好几个星期没来办公室了。这就是我需要的。有没有办法使前两列拉伸以填充除最右边列定义的像素宽度以外的所有内容?正如您所建议的,我使用的是HorizontalAlignment=“Stretch”,但前两列占用的空间似乎仍然远远小于可用的空间。列定义中的宽度可以像width=“200”一样大小,其他两列将占用其余空间的一半。看一看可以布置网格的不同方式。