【问题标题】:Ellipse position according to grid layout根据网格布局的椭圆位置
【发布时间】:2015-03-17 00:05:45
【问题描述】:

我在我的 wp 8.1 应用程序 (XAML/C#) 中遇到了一些元素的定位问题。我已经读过要创建灵活的布局,我应该使用网格控件。 好吧,这是我在页面元素中的 XAML:

<Grid  Style="{StaticResource LayoutGridCreateProfilStyle}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Rectangle Grid.Row="0" Height="60" Fill="#F3A8E4F9" ></Rectangle>
    <Rectangle Grid.Row="1" Height="40" Fill="Gray"></Rectangle>
    <ListBox Grid.Row="2" Height="420" Background="Transparent"/>
    <Canvas Grid.Row="3">
        <Ellipse Height="100" Margin="0,0,0,0" Width="100" Fill="Black" Canvas.Left="152" Canvas.Top="10"></Ellipse>
    </Canvas>

</Grid>

在 XAML 设计器中,我实际上看到了我想要的内容,如下所示:

这是在我的诺基亚 Lumia 925 上的外观:

如您所见,椭圆被切割了,我真的不知道如何按应有的方式放置它,并且实际出现在设计器视图中。 也许有人可以帮助我?

提前致谢!

【问题讨论】:

    标签: c# xaml responsive-design windows-phone-8.1 ellipse


    【解决方案1】:

    问题是您的高度不足以显示网格的所有元素。前三行占用了 540 像素的累积高度。如果运行时高度为 640,那么网格的最后一行只剩下 100 个。

    但是你的 Ellipse 从 Canvas 的顶部偏移了 10 像素,所以它总共需要 110(10 偏移 + 100 像素椭圆高度)才能完全显示。如果您的最后一行的空间小于 110 像素,那么它将被截断,看起来确实如此。

    【讨论】:

    • 感谢您的回答,确实您是对的。所以我将 Canvas.Top 属性设置为 0,它仍然被剪切,虽然少了一点,但仍然如此。我必须重置椭圆的大小才能完成。但是我如何预测可用的运行时高度的大小?您将如何解决所有屏幕尺寸的问题?
    • 您无法预测高度,因为不同的手机具有不同的高度。因此,请将您的最后一个网格行设置为 Auto,以便它始终为椭圆留出空间,然后将倒数第二行设置为 *(星号)大小,这样它就有剩余的空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多