2010-10-06 59 views
0

使用Silverlight导航项目模板时,我希望我的页面的内容在导航框架中水平居中,并且不会填充整个空间。如何确定导航页面的大小

例如,考虑将这片XAML放置在Home.xmal视图中。这样做的结果是一个圆角米色背景,在中心正确填充整个框架的“一些有趣的内容”。

<navigation:Page x:Class="SilverlightApplication3.Home" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" 
    Title="Home" 
    Style="{StaticResource PageStyle}"> 
    <Grid x:Name="LayoutRoot"> 
     <Border BorderThickness="5" CornerRadius="20" Background="Beige" Width="Auto" Height="Auto"> 
      <TextBlock Text="Some interesting content goes here" FontSize="20" 
         FontFamily="Comic Sans MS" Foreground="Teal" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" Margin="20"/> 
     </Border> 
    </Grid> 
</navigation:Page> 

我希望的是,文本将被米色背景包围20像素的内容。

现在,如果我添加到此LayoutRoot Width="400" Height="100"然后我得到的东西看起来很接近,但这些数字是固定的,将不适合,因为内容更改大小。

如何更改Home视图或MainPage框架的XAML以实现所需的布局?

回答

2

在mainpage.xaml中,您可以设置导航框架使其内容居中(默认为拉伸)。

例如

<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" 
           Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed" 
           HorizontalContentAlignment="Center" 
           VerticalContentAlignment="Center"> 

这将显示中间的任何内容页面,无论它们的大小如何。最好将最小和最大尺寸限制添加到子页面,以避免折叠太小,但这是设计问题。它可以大于父框架,您需要在导航框架周围添加滚动查看器。

+0

+1。我非常喜欢“如果它们可以比父框架更大,则需要在导航框架周围添加滚动查看器”部分。谢谢你的提示。 – 2013-04-22 02:58:05