.NET MAUI 图像元素中断网格比率

.NET MAUI image element break Grid ratio

提问人:iwanlenin 提问时间:10/29/2023 更新时间:11/1/2023 访问量:59

问:

我有一个网格,在第一个边框内有一些边框和图像:

    <Grid Margin="15" RowDefinitions=".4*,.1*,.1*,.4*">
    <Border
        Grid.Row="0"
        Grid.RowSpan="2"
        Stroke="{StaticResource DarkGray}">
        <Border.StrokeShape>
            <RoundRectangle
                CornerRadius="35,35,35,35" />
        </Border.StrokeShape>
        <Image               
            Aspect="AspectFill"
            Source="cup.jpg" />
    </Border>
我想要的是这样的:

Layout without Image Element

但是,如果我在网格的第一行添加图像,我会得到这张照片:

Same layout with Image Element

有人可以告诉我为什么图像会破坏布局吗? 整个布局,如果你想玩:

    <Grid
    Margin="15"
    RowDefinitions=".4*,.1*,.1*,.4*">
    <Border
        Grid.Row="0"
        Grid.RowSpan="2"
        Stroke="{StaticResource DarkGray}">
        <Border.StrokeShape>
            <RoundRectangle
                CornerRadius="35,35,35,35" />
        </Border.StrokeShape>
        <Image               
            Aspect="AspectFill"
            Source="cup.jpg" />
    </Border>


    <Border
        Grid.Row="1"
        Grid.RowSpan="1"
        Stroke="{StaticResource DarkGray}">
        <Border.StrokeShape>
            <RoundRectangle
                CornerRadius="35,35,35,35" />
        </Border.StrokeShape>

    </Border>
    <Border
        Grid.Row="2"
        Grid.RowSpan="1"
        Stroke="{StaticResource DarkGray}">
        <Border.StrokeShape>
            <RoundRectangle
                CornerRadius="35,35,35,35" />
        </Border.StrokeShape>

    </Border>
    <Border
        Grid.Row="3"
        Grid.RowSpan="1"
        Stroke="{StaticResource DarkGray}">
        <Border.StrokeShape>
            <RoundRectangle
                CornerRadius="35,35,35,35" />
        </Border.StrokeShape>

    </Border>
</Grid>
.NET XAML 用户界面 MAUI

评论


答:

1赞 Jianwei Sun - MSFT 10/30/2023 #1

我测试了您提供的代码,但它运行良好。下面是完整的 .xaml 代码:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp3.MainPage"
             BackgroundColor="Black">
    <Grid Margin="15"
          RowDefinitions=".4*,.1*,.1*,.4*">
        <Border Grid.Row="0"
                Grid.RowSpan="2"
                Stroke="Black">
            <Border.StrokeShape>
                <RoundRectangle CornerRadius="35,35,35,35" />
            </Border.StrokeShape>
            
            <Image Aspect="AspectFill"
                   Source="sum.jpg" />
        </Border>


       <Border Grid.Row="1" Grid.RowSpan="1" Stroke="{StaticResource DarkGray}">
            <Border.StrokeShape>
                <RoundRectangle CornerRadius="35,35,35,35" />
            </Border.StrokeShape>


       </Border>


       <Border Grid.Row="2" Grid.RowSpan="1" Stroke="{StaticResource DarkGray}">
            <Border.StrokeShape>
                <RoundRectangle CornerRadius="35,35,35,35" />
            </Border.StrokeShape>
        </Border>


       <Border Grid.Row="3" Grid.RowSpan="1" Stroke="{StaticResource DarkGray}">
            <Border.StrokeShape>
                <RoundRectangle CornerRadius="35,35,35,35" />
            </Border.StrokeShape>
            <Image Aspect="AspectFill" Source="sss.png" />
        </Border>
    </Grid>
</ContentPage>

这就是效果

更新

创建一个新的干净项目,并且还与其他图像(如果它自己这样做的图像一样)可以修复它。

评论

0赞 iwanlenin 10/30/2023
与我的图像相同的代码: imgur.com/D1uqFYC 这就是我没有得到的。问题出在哪里。
0赞 Jianwei Sun - MSFT 10/30/2023
这很奇怪......如果您创建一个新项目来运行代码,它会正常工作吗?
0赞 iwanlenin 10/30/2023
是的。很奇怪。我用一个新的干净项目和其他图像(以防图像本身这样做)做到了这一点。
0赞 Jianwei Sun - MSFT 10/31/2023
好的,我根据您的回复编辑了答案。
0赞 iwanlenin 11/1/2023 #2

没有找到问题的根本原因,但是在多次重新启动并清理解决方案后,它以某种方式以正确的方式显示元素: 最终结果