Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >移动开发(六):.NET MAUI中布局笔记介绍

移动开发(六):.NET MAUI中布局笔记介绍

原创
作者头像
小明互联网技术分享社区
发布于 2024-09-18 02:57:53
发布于 2024-09-18 02:57:53
49100
代码可运行
举报
运行总次数:0
代码可运行

一、StackLayout 布局

StackLayout 主要用于水平或者垂直方向一组元素的排列布局。 其中 Orientation 属性用来指定元素排列的方向,默认为 Vertical

(垂直)。 StackLayout 通常用于在页面上排列 UI 的子布局。

官方介绍

代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <StackLayout Margin="10,15,10,15" Orientation="Horizontal">
<Label Text="StackLayout水平布局" VerticalOptions="Center" HorizontalOptions="Center" />
       <Button x:Name="Btn1" Text="按钮一" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6"  />
       <Button x:Name="Btn2" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
       <Button x:Name="Btn3" Text="按钮三" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
   </StackLayout>

运行效果:

注意

● 未显式设置某元素的大小,则该元素将展开以填充可用宽度,如果 Orientation 属性设置为 Horizontal,则填充可用高度。

● 一般作包含其他子布局的父布局,不应使用 StackLayout 通过 StackLayout 对象的组合来重现 Grid 布局。 建议使用使用 Grid 更好地实现所需的布局。

二、HorizontalStackLayout 水平排列布局

其功能相当于StackLayout + Orientation 属性为值为Horizontal 。官方说使用该布局性能优于StackLayout。如果遇到水平排列布局建议使用HorizontalStackLayout。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <HorizontalStackLayout>
      <Button x:Name="Btn1" Text="按钮一" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6"  />
      <Button x:Name="Btn2" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
      <Button x:Name="Btn3" Text="按钮三" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
  </HorizontalStackLayout>

三、VerticalStackLayout 垂直排列布局

其功能相当于StackLayout + Orientation 属性为值为Horizontal 。官方说使用该布局性能优于StackLayout。如果遇到水平排列布局建议使用HorizontalStackLayout。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<VerticalStackLayout>
        <Button x:Name="Btn1" Text="按钮一" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6"  />
        <Button x:Name="Btn2" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
        <Button x:Name="Btn3" Text="按钮三" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
    </VerticalStackLayout>

运行效果如下:

四、Grid 网格布局

Grid 用于显示行和列中的元素,这些元素可以有比例大小或绝对大小。 可使用 RowDefinitions 和 ColumnDefinitions 属性指定网格的行和列。

属性列表

属性名

类型

描述

默认值

Column

int

附加属性,指示视图在父 Grid 中的列对齐方式。

0

ColumnDefinitions

ColumnDefinitionCollection

定义网格列宽度的 ColumnDefinition 对象列表。

N/A

ColumnSpacing

double

指示网格列之间的间距。

0

ColumnSpan

int

附加属性,指示视图在父 Grid 中跨越的总列数。

1

Row

int

附加属性,指示视图在父 Grid 中的行对齐方式。

0

RowDefinitions

RowDefinitionCollection

定义网格行高度的 RowDefinition 对象列表。

N/A

RowSpacing

double

指示网格行之间的间距。

0

RowSpan

int

附加属性,指示视图在父 Grid 中跨越的总行数。

1

注意:ColumnDefinitions 和 RowDefinitions 属性没有默认值,因为它们是由用户定义的集合,通常在初始化 Grid 时明确设置。

代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="2*" />
         <RowDefinition />
         <RowDefinition Height="60" />
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
         <ColumnDefinition />
         <ColumnDefinition />
     </Grid.ColumnDefinitions>
     <BoxView Color="Green" />
     <Label Text="第一行第一列"
            HorizontalOptions="Center"
            VerticalOptions="Center" />
     <Image x:Name="Image1" Source="ImageSources" ></Image>
     <ImageButton ></ImageButton>
     
     <BoxView Grid.Column="1"
              Color="Gray" />
     <Label Grid.Column="1"
            Text="第一行第二列"
            HorizontalOptions="Center"
            VerticalOptions="Center" />
     <BoxView Grid.Row="1"
              Color="Teal" />    

     <Button Grid.Row="0" Grid.Column="1" x:Name="Btn1" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />

     <BoxView Grid.Row="1"
              Grid.Column="1"
              Color="Purple" />      
     
     <Button Grid.Row="1" Grid.Column="1" x:Name="Btn2" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />

     <BoxView Grid.Row="2"
              Grid.ColumnSpan="2"
              Color="Red" />
     <Label Grid.Row="2"
            Grid.ColumnSpan="2"
            Text="Row 2, Columns 0 and 1"
            HorizontalOptions="Center"
            VerticalOptions="Center" />
 </Grid>

运行效果如下:

五、FlexLayout

.NET Multi-platform App UI (.NET MAUI) 中的 FlexLayout 是一种灵活的布局控件,它可以在堆栈中水平和垂直排列其子项。当子项太多无法容纳在单行或单列时,FlexLayout 还可以自动换行以适应内容。此外,它还提供了丰富的属性来控制方向、对齐方式,并且能够适应不同的屏幕大小。FlexLayout 基于 CSS 的灵活框布局模块,因此它具有类似 CSS 的灵活性。

属性列表

属性名

类型

描述

默认值

AlignContent

FlexAlignContent

确定多行布局中子元素之间的空间分配方式。

Stretch

AlignItems

FlexAlignItems

指示子元素沿交叉轴的空间分配方式。

Stretch

Direction

FlexDirection

定义子元素的方向和主轴方向。

Row

JustifyContent

FlexJustify

指定子元素沿主轴的空间分配方式。

Start

Position

FlexPosition

确定子元素的位置方式,是相对位置还是使用固定位置。

Relative

Wrap

FlexWrap

控制子元素是否应该换行到新行。

NoWrap

AlignSelf

FlexAlignSelf

指示特定子元素沿交叉轴的空间分配方式。

Auto

Basis

FlexBasis

定义子元素在分配空间前的初始大小。

Auto

Grow

float

指定子元素在主轴上扩展的可用空间量。

0.0

Order

int

确定子元素在容器中的布局顺序。

0

Shrink

float

控制子元素在必要时如何收缩以适应容器。

1.0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <StackLayout>
     <FlexLayout Direction="Column"
      AlignItems="Center"
      JustifyContent="SpaceEvenly">
         <Label Text="FlexLayout 垂直布局" />
         <Button x:Name="Btn1" Text="按钮一" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6"  />
         <Button x:Name="Btn2" Text="按钮二" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
         <Button x:Name="Btn3" Text="按钮三" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />

         <Label Text="Another Label" />
     </FlexLayout>
     <FlexLayout Direction="Row" Margin="50"
      AlignItems="Center"
      JustifyContent="SpaceEvenly">
         <Label Text="FlexLayout 水平布局" />
         <Button x:Name="Btn4" Text="按钮四" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6"  />
         <Button x:Name="Btn5" Text="按钮五" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
         <Button x:Name="Btn6" Text="按钮六" HeightRequest="50"  HorizontalOptions="Center" Margin="5"  Style="{StaticResource ButtonStyle}" BorderWidth="1" TextColor="White"  BackgroundColor="#2946E6" BorderColor="#2946E6" />
         <Label Text="Another Label" />
     </FlexLayout>
 </StackLayout>

六、AbsoluteLayout布局

.NET Multi-platform App UI (.NET MAUI) 中的 AbsoluteLayout 是一种特殊的布局控件,它允许你精确地控制子项的位置和大小。你可以使用设备无关的单位来指定子项相对于 AbsoluteLayout 左上角的位置。这种布局还支持按比例定位和调整大小,这意味着你可以根据屏幕大小或容器尺寸来动态调整子项的位置和大小。

与 .NET MAUI 中的其他布局不同,AbsoluteLayout 允许子项相互重叠。因此,它适用于那些需要精确控制子项位置的场景,比如创建复杂的界面元素或动画效果。不过,由于它不自动调整子项的位置以避免重叠,所以在大多数常规布局需求中并不常用。当你知道子项的大小或不需要考虑子项之间的相互影响时,AbsoluteLayout 是一个很好的选择。

优点

灵活性高:BindableLayout可以根据需要呈现多种不同类型的数据,而不仅仅局限于单一的列表或网格布局。

可定制性强:BindableLayout可以使用自定义的数据模板来呈现数据,以满足不同的呈现需求。

数据绑定方便:BindableLayout可以直接绑定一个集合数据源,无需编写额外的代码来维护数据绑定。

性能高效:BindableLayout使用虚拟化技术来呈现大量的数据,从而保证了性能的高效和稳定。

属性列表

属性名

类型

描述

默认值

LayoutBounds

Rect

表示子元素的位置和大小。该属性允许您指定子元素相对于其父 AbsoluteLayout 的位置和尺寸。

(0, 0, AutoSize, AutoSize)

LayoutFlags

AbsoluteLayoutFlags 枚举

指示用于调整子元素位置和大小的布局边界属性是否按比例解释。

AbsoluteLayoutFlags.None

代码示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <AbsoluteLayout>
        <BoxView Color="Blue"
                 AbsoluteLayout.LayoutBounds="0.5,0,100,45"
                 AbsoluteLayout.LayoutFlags="PositionProportional" />     
        <BoxView Color="Green"
                 AbsoluteLayout.LayoutBounds="0,0.5,45,100"
                 AbsoluteLayout.LayoutFlags="PositionProportional" />
        <BoxView Color="Red"
                 AbsoluteLayout.LayoutBounds="1,0.5,45,100"
                 AbsoluteLayout.LayoutFlags="PositionProportional" />
        <BoxView Color="Black"
                 AbsoluteLayout.LayoutBounds="0.5,1,100,45"
                 AbsoluteLayout.LayoutFlags="PositionProportional" />
        <Label Text="AbsoluteLayout 布局"
               AbsoluteLayout.LayoutBounds="0.5,0.5,150,35"
               AbsoluteLayout.LayoutFlags="PositionProportional" />
    </AbsoluteLayout>

运行效果

七、BindableLayout布局

BindableLayout 是一种特殊的布局类,它允许你通过绑定数据集(通常是实现 IEnumerable 接口的集合)来动态地生成布局的内容。这意味着你可以把一个数据列表绑定到这个布局上,然后布局会根据数据集中的每一项自动生成对应的视图组件。

属性列表

属性名

类型

描述

ItemsSource

IEnumerable

想要显示的数据集,比如一个用户列表

ItemTemplate

DataTemplate

告诉布局如何显示每一个数据项,比如每个用户的名字和头像怎么展示

ItemTemplateSelector

DataTemplateSelector

在某些情况下,你可能希望根据数据的不同来改变显示方式,这时候就需要用到选择器来决定使用哪个模板。

新增user实体类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public class User : INotifyPropertyChanged
 {
     private string name ;
     private int age;
     private string imagePath;

     public string Name
     {
         get => name;
         set
         {
             name = value;
             OnPropertyChanged();
         }
     }

     public int Age
     {
         get => age;
         set
         {
             age = value;
             OnPropertyChanged();
         }
     }

     public string ImagePath
     {
         get => imagePath;
         set
         {
             imagePath = value;
             OnPropertyChanged();
         }
     }

     public event PropertyChangedEventHandler PropertyChanged;

     protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
     {
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
     }
 }

xaml代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <StackLayout x:Name="userList" BindableLayout.ItemsSource="{Binding}"
     Orientation="Vertical">
     <BindableLayout.ItemTemplate>
         <DataTemplate>
             <Border StrokeThickness="1">
                 <HorizontalStackLayout Margin="5">
                     <Image Source="{Binding ImagePath}"
                     Aspect="AspectFill"
                     WidthRequest="44"
                     HeightRequest="44" />
                     <Label FontSize="Large" Text="{Binding Name}"></Label>
                     <Label FontSize="Medium" Text="{Binding Age}"></Label>
                 </HorizontalStackLayout>
             </Border>
         </DataTemplate>
     </BindableLayout.ItemTemplate>
 </StackLayout>

后台绑定代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ObservableCollection<User> users = new ObservableCollection<User>();
 users.Add(new User()
 {
     Name = "小明",
     Age = 25,
     ImagePath = "dotnet_bot.png"
 });
 users.Add(new User()
 {
     Name = "小李",
     Age = 30,
     ImagePath = "dotnet_bot.png"
 });
 userList.BindingContext = users;

效果展示

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
157. [HarmonyOS NEXT 实战案例一:Grid] 基础网格布局:打造精美电商商品列表
在HarmonyOS NEXT的ArkUI框架中,Grid组件是一种强大的网格容器,它与GridItem子组件一起使用,可以创建灵活的网格布局。网格布局是由"行"和"列"分割的单元格组成,通过指定"项目"所在的单元格,可以实现各种各样的布局效果。
全栈若城
2025/06/30
1270
Xamarin 学习笔记 - Layout(布局)
在本篇教程中,我们将了解Xamarin.Forms中几个常用的Layout类型并介绍使用这几种布局类似进行跨平台移动开发时的示例。
葡萄城控件
2018/07/24
1.9K0
Xamarin 学习笔记 - Layout(布局)
(02).NET MAUI实战 布局
既然要做实战开发会建项目之后就需要认识布局控件了,本篇文章分享.NET MAUI中的一些基础常用的布局控件。
JusterZhu
2022/12/07
8630
(02).NET MAUI实战 布局
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
在移动开发过程中,第三方对接是非常常见的。今天给大家分享.NET MAUI如何使用REST API实现输入城市名称查询天气的示例,希望对大家学习.NET MAUI可以提供一些帮助!
小明互联网技术分享社区
2024/09/24
4610
移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记
移动开发(五):.NET MAUI中自定义主题设置
今天给大家分享.NET MAUI应用中如何自定义主题,提升APP本身个性化设置的能力,让你开发的APP更具有吸引力。感兴趣的朋友可以来学习一下!
小明互联网技术分享社区
2024/08/11
5180
移动开发(五):.NET MAUI中自定义主题设置
Xamarin开发笔记—设备类&第三方弹窗的使用和注意事项
一、设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx")); //打开网页 Device.OpenUri(new Uri("http://vipstone.cnblogs.com/")); //判断当前运行平台 Device.RuntimePlatform => Device.iOS, Device.Android, Device.WinPhone //设备类型平板、手机、桌面 Dev
磊哥
2018/05/08
8320
Xamarin开发笔记—设备类&第三方弹窗的使用和注意事项
[MAUI]模仿iOS多任务切换卡片滑动的交互实现
看了上一篇博文的评论,大家对MAUI还是比较感兴趣的,非常感谢大家的关注,这个专栏我争取周更😉。
郑子铭
2023/08/29
5810
[MAUI]模仿iOS多任务切换卡片滑动的交互实现
有点酷,使用 .NET MAUI 探索太空
我准备用 .NET Maui 实现一个非常有意思的 "前往太空" 的程序。第一步,需要图片素材,我使用了 Aan Ragil 的一组非常棒的 Dribbble 素材图片。
全球技术精选
2022/09/05
3900
有点酷,使用 .NET MAUI 探索太空
Listview的CachingStrategy="RetainElement"
因为我的listview绑定了好几组不同数据来回切换,有时候感觉项目的状态残留着上一组的状态。没有完全清空。没有耐心查找,我的代码问题了。就查了下CachingStrategy 缓存策略。原来用的是 RecycleElement ,我改成了RetainElement,之后这种残留就没有了。应该是xamarin内部问题?
xiny120
2019/11/20
6320
C#一分钟浅谈:Xamarin 移动应用开发
随着移动设备的普及,移动应用开发成为了软件开发领域的一个重要分支。Xamarin 是一个基于 .NET 平台的跨平台移动应用开发框架,允许开发者使用 C# 语言编写一次代码,即可在 iOS、Android 和 Windows Phone 上运行。本文将从基础概念入手,逐步深入探讨 Xamarin 开发中的常见问题、易错点及如何避免,并通过代码案例进行解释。
Jimaks
2024/11/19
7050
鸿蒙特效教程05-鸿蒙很开门
屏幕上有一个双开门,点击中间的按钮后,两侧门会向打开,露出开门后面的内容。当用户再次点击按钮时,门会关闭。
苏杰豪
2025/03/26
890
鸿蒙特效教程05-鸿蒙很开门
HarmonyOS 开发实践——相对布局 RelativeContainer
我们现在要实现上面这种布局效果,背景图略过。视图主要分为上下两部分纵向排列,上部分是一张图片,下部分横向排列两个按钮。
小帅聊鸿蒙
2024/11/01
2700
HarmonyOS 开发实践——相对布局 RelativeContainer
【NEW】WPF MVVM 模式下自写自用的窗口样式
SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。
Shunnet
2022/09/01
2.5K0
【NEW】WPF MVVM 模式下自写自用的窗口样式
Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面
Xamarin.Forms 是一个跨平台的、基于原生控件的UI工具包,开发人员可以轻松的创建适用于 Android,iOS 以及 Windows Phone的用户界面。Xamarin.Forms 通过使用平台的原生控件来渲染用户界面,使用 Xamarin.Forms 的 App在外观上与平台完全一致。通过本文您可以快速了解如何使用 Xamarin.Form 来进行应用程序的开发。 简介 Xamarin.Forms可以帮助开发人员快速的构建跨平台的UI,通过一次编码,生成多平台界面。如果你做的工作涉及到三个平
葡萄城控件
2018/01/10
14.3K0
Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面
.NET MAUI 模仿网易云音乐黑胶唱片的交互实现
这是一个良好的交互设计,留声机的界面隐喻准确地向人们传达产品概念和使用方法:当手指左右滑动时,便模拟了更换唱盘从而导向切换歌曲的交互功能。
郑子铭
2023/08/29
6050
.NET MAUI 模仿网易云音乐黑胶唱片的交互实现
3. 单页App
上一篇文章我们创建了 Xamarin 应用程序,当我们创建完应用程序后 VS 2019 帮我们生成了一个名为 MainPage 的 xaml 文件,这个文件在当前项目中是仅有的页面,我们称这个应用程序称为 单页应用程序 。下面我们就修改一下上一篇文章所创建的应用程序。首先我们打开 MainPage.xaml 文件,将模板中的代码修改为如下形式:
喵叔
2020/09/08
1.5K0
3. 单页App
SilverLight企业应用框架设计【二】框架画面
注意,这里每个顶部菜单的ICO图标不是动态的,朋友们,想让他变成动态的就自己动手吧
liulun
2022/05/09
6880
SilverLight企业应用框架设计【二】框架画面
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
本文主要讲解了在Xamarin中如何利用StackLayout、RelativeLayout、Grid、Canvas等控件进行布局,以及如何进行页面跳转、传参、动画等操作。还讲解了如何在Xamarin.Forms中实现页面跳转、传参、动画等基本操作,以及如何使用Xamarin.Forms内置的属性和方法来实现更复杂的布局和交互操作。
GuZhenYin
2018/01/04
2.5K0
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
.NET MAUI Preview 7发布,跨平台UI框架
.NET MAUI Preview 7 现已发布。该版本中引入了新的布局,此举是对性能和可靠性的重大改变。同时还基于新的 SemanticService、字体缩放选项、对 Xamarin.Forms 效果的兼容性支持等引入了一些新的以可访问性为重点的功能。
沙漠尽头的狼
2021/12/01
1.6K0
.NET MAUI Preview 7发布,跨平台UI框架
张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )
  所谓 UWP 样式的汉堡菜单,我曾在“张高兴的 UWP 开发笔记:汉堡菜单进阶”里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色的矩形用来表示
张高兴
2018/05/18
5.2K0
推荐阅读
相关推荐
157. [HarmonyOS NEXT 实战案例一:Grid] 基础网格布局:打造精美电商商品列表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档