Xaml 在画布中放置网格

Xaml 在画布中放置网格,xaml,windows-runtime,windows-phone-8.1,Xaml,Windows Runtime,Windows Phone 8.1,我正在为Windows Phone 8.1(非SilverLight)创建应用程序。我想用XAML将网格类放入画布类中,如下所示: 我希望将网格定位在画布中间,这意味着网格顶部和画布顶部之间的距离与网格底部和画布底部之间的距离相同。类似地,栅格左侧和画布左侧之间的距离应与栅格右侧和画布右侧之间的距离相同 我如何做到这一点,并确保布局在不同手机上所有类型的屏幕分辨率上都是一致的 到目前为止,我有: <Canvas Grid.Row="1" Grid.Column="1">

我正在为Windows Phone 8.1(非SilverLight)创建应用程序。我想用XAML将网格类放入画布类中,如下所示:

我希望将网格定位在画布中间,这意味着网格顶部和画布顶部之间的距离与网格底部和画布底部之间的距离相同。类似地,栅格左侧和画布左侧之间的距离应与栅格右侧和画布右侧之间的距离相同

我如何做到这一点,并确保布局在不同手机上所有类型的屏幕分辨率上都是一致的

到目前为止,我有:

<Canvas Grid.Row="1" Grid.Column="1">
        <Grid Width="300" Height="200" Canvas.Left="40" Canvas.Top="40">

            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>



            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions >
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>


            </Grid.ColumnDefinitions>
       </Grid>
</Canvas>

这不是我在部署到手机时想要的,我知道通过手动调整高度和宽度来解决问题并不是一个好的解决方案。 我是这方面的新手,如果我使用了错误的术语,我很抱歉


请帮助并指导我>您有两个基本选项来解决这个问题,您可以使用一个带有大量边距的网格,这样网格就不会触及屏幕边缘。或者可以在网格中使用网格。无论屏幕大小如何,当您希望控件具有固定位置时,画布应仅用于图形工作

对于你的情况,我会在网格中使用网格。网格将所有内容集中在其中,从而解决您的问题。但既然你说你想在页边空白处添加额外的信息,我会这样做:

<Grid x:Name="Outer>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid x:Name="Inner" Grid.Column="1" Grid.Row="1"/>
</Grid>
Outer
-----------
| |     | |
-----------
| |     | |
| |inner| |
| |     | |
-----------
| |     | |
-----------
以及在外部网格中添加更多控件的位置


请注意,网格是一个相对昂贵的控件,因此当您可以使用另一个控件时,请尽量避免放置它,但这不应阻止您使用它。

我不知道您为什么要使用
画布来定位内容网格。如果
canvas
不是必需的,则可以使用以下代码实现布局

<Grid Grid.Row="1" Grid.Column="1">
        <Grid Width="300" Height="200" HorizontalAllignment="Center" VerticalAllignment="Center">

            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>



            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions >
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>


            </Grid.ColumnDefinitions>
       </Grid>
</Grid>


您为什么要这样做?你想用它做什么?@CKII想在网格和画布之间留一些空间,这样当我触摸网格的边缘时,我就有空间来显示触摸点的左、右、上、下选项。有没有更好的方法来做到这一点呢??请建议,谢谢:)非常感谢你给我建议,甚至教我更多关于网格和画布的知识。我想我会听从你的建议,在网格中使用网格D