C# MAUI Popup+GridLayout 動態調整UI大小[ 移除GridLayout內的行列配置(RowDefinitions/ColumnDefinitions)和對應的內部元件 ]
C# MAUI Popup+GridLayout 動態調整UI大小[ 移除GridLayout內的行列配置(RowDefinitions/ColumnDefinitions)和對應的內部元件 ]
資料來源: 公司專案
Discount.xaml
<?xml version="1.0" encoding="utf-8" ?> <mct:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="VPOS.Views.Discount" xmlns:mct="clr-namespace:CommunityToolkit.Maui.Views;assembly=CommunityToolkit.Maui" CanBeDismissedByTappingOutsideOfPopup="False" Color="#194a6e"> <Grid x:Name="FullGrid" RowDefinitions ="0.6*,8.4*" ColumnDefinitions="*"> <Frame BackgroundColor="#194a6e" BorderColor="Blue" CornerRadius="10" Margin="0" Padding="0" Grid.Row="0" Grid.Column="0"> <Label Text="優惠專區" TextColor="White" FontSize="Large" FontAutoScalingEnabled="True" VerticalOptions="Center" HorizontalOptions="Center" /> </Frame> <Grid x:Name="BodyGrid" RowDefinitions ="*" ColumnDefinitions="4*,5*" Grid.Row="1" Grid.Column="0"> <Grid x:Name="LeftBodyGrid" RowDefinitions ="2*,5*,1*" ColumnDefinitions="*" BackgroundColor="White" Grid.Row="0" Grid.Column="0"> <Button Text="123" Grid.Row="0" Grid.Column="0" HorizontalOptions="Fill" VerticalOptions="Fill" /> </Grid> <Grid x:Name="RightBodyGrid" RowDefinitions ="*,*,*,*,*,*,*,*" ColumnDefinitions="*,*,*" BackgroundColor="Blue" Grid.Row="0" Grid.Column="1"> <Button Text="456" Grid.Row="0" Grid.Column="0" HorizontalOptions="Fill" VerticalOptions="Fill" /> </Grid> </Grid> </Grid> </mct:Popup>
Discount.xaml.cs
using CommunityToolkit.Maui.Views; namespace VPOS.Views; public partial class Discount : Popup//: ContentPage { public Discount(int mode=0) { InitializeComponent(); if(mode == 0 ) { this.Size = new Size(900, 700); } else { RightBodyGrid.Clear();//Layout內元件配置移除 RightBodyGrid.IsVisible = false;//隱藏右側Layout元件 BodyGrid.ColumnDefinitions.RemoveAt(1);//移除右側Layout元件 this.Size = new Size(400, 700); } } }
結果圖: