我是.NET毛伊岛的新手,我有一个简单的问题:

如何将布局中的所有剩余空间用于GraphicsView?

我试了HorizontalOptions="Fill"VerticalOptions="Fill"的组合.但只有在我将GraphicsView直接插入到Content Page中时,它才能起作用. 一旦我使用布局将GraphicsView放入其中,它就不会出现.要显示这一点,唯一的方法是使用具体数字的高度和宽度要求.

为什么我的try 不起作用,我如何解决这个问题?

这不起作用:

<ContentPage>    
    <ContentPage.Resources>
        <drawable:MyDrawable x:Key="drawable" />
    </ContentPage.Resources>

    <VerticalStackLayout>
        <GraphicsView Drawable="{StaticResource drawable}"
            BackgroundColor="Purple"
            HorizontalOptions="Fill"
            VerticalOptions="Fill"/>
        <Label
            Text="Hello, World!"
            SemanticProperties.HeadingLevel="Level1"
            FontSize="32"
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</ContentPage>

这是可行的,但大小是固定的:

<ContentPage>    
    <ContentPage.Resources>
        <drawable:MyDrawable x:Key="drawable" />
    </ContentPage.Resources>

    <VerticalStackLayout>
        <GraphicsView Drawable="{StaticResource drawable}"
            BackgroundColor="Purple"
            HeightRequest="200"
            WidthRequest="200" />/>
        <Label
            Text="Hello, World!"
            SemanticProperties.HeadingLevel="Level1"
            FontSize="32"
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</ContentPage>

推荐答案

StackLayout在一个方向上不受约束,无论是垂直还是水平.因此,您不能使用Fill选项来占用该特定方向上的所有可用空间.

如果要占用整个可用空间,则应改用网格:

<ContentPage>    
    <ContentPage.Resources>
        <drawable:MyDrawable x:Key="drawable" />
    </ContentPage.Resources>

    <Grid RowDefinitions="*,auto">
        <GraphicsView Drawable="{StaticResource drawable}"
            Grid.Row="0"
            BackgroundColor="Purple"
            HorizontalOptions="Fill"
            VerticalOptions="Fill"/>
        <Label
            Grid.Row="1"
            Text="Hello, World!"
            SemanticProperties.HeadingLevel="Level1"
            FontSize="32"
            HorizontalOptions="Center" />
    </Grid>
</ContentPage>

在这里,网格的第一行将使用Star选项占用尽可能多的空间,而第二行仅占用使用行高度auto选项放置标签所需的空间.

一百零二

Csharp相关问答推荐

将多个enum值传递给MAUI中的转换器参数的XML语法是什么?

[0-n]范围内有多少个Integer在其小数表示中至少包含一个9?

使用ElasticsearchClient设置忽略属性.默认MappingFor<>

需要更改哪些内容才能修复被覆盖的财产中的无效警告CS 8765?

ASP.NET Core:如何在IPageFilter中注入ApplicationDbContext

为什么总输出就像12.3没有一分一样?

如何模拟耐久任务客户端在统一测试和获取错误在调度NewsListationInstanceAsync模拟设置

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

Quartz调度程序不调用作业(job)类

WeakReference未被垃圾收集

C#阻塞调用或await calling inside calling方法

在使用Audit.NET的AuditTrail实现中,如何逐月将数据摄取到AzureTableStorage?

在两个已具有一对多关系的表之间添加另一个一对多关系

Postgres ENUM类型在第一次运行时对Dapper不可见

Azure函数正在返回值列表,但该列表在Chrome中显示为空

多个参数的最小API删除

如何从SignalR获取连接客户端的域

数据库操作预计影响1行,但实际影响0行; after _dbContext.SaveChanges();

从HTML元素获取 colored颜色

ASP.NET核心8:app.UseStaticFiles()管道执行顺序