C# WINDOWS MAUI專案 框線(Border)/BoxView/按鈕物件陣列綁定事件函數
C# WINDOWS MAUI專案 框線(Border)/BoxView/按鈕物件陣列綁定事件函數
資料來源: https://learn.microsoft.com/zh-tw/dotnet/maui/user-interface/controls/boxview
https://learn.microsoft.com/zh-tw/dotnet/maui/user-interface/controls/border
GITHUB: https://github.com/jash-git/MAUI_WinAPI_Object_test/tree/main/Code/07
MainPage.xaml code
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:VPOS.CustomControls" x:Class="VPOS.MainPage" Title=""><!-- 隱藏標題 --> <Grid x:Name="FullGrid"> <!-- ContentPage 規劃成兩列一行--> <Grid.RowDefinitions> <RowDefinition Height="12*"/> <RowDefinition Height="0.7*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> </Grid.ColumnDefinitions> <BoxView Grid.Row="0" Grid.Column="0" Color="Green" /> <Grid x:Name="LeftGrid" Grid.Row="0" Grid.Column="0"> <!-- 規劃成一列三行--> <Grid.RowDefinitions> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="6*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="4*"/> </Grid.ColumnDefinitions> <Border Stroke="#C49B33" Grid.Row="0" Grid.Column="0" StrokeThickness="2" StrokeShape="RoundRectangle 10,10,10,10" Background="Teal" Padding="3,3,3,3"> <Button Grid.Row="0" Grid.Column="0" x:Name="CloseBtn" Text="Close" Clicked="CloseBtn_Clicked" VerticalOptions="Start" HorizontalOptions="Start"/> </Border> <Border Stroke="#C49B33" Grid.Row="0" Grid.Column="1" StrokeThickness="2" StrokeShape="RoundRectangle 10,10,10,10" Background="Purple" Padding="3,3"> </Border> <BoxView Grid.Row="0" Grid.Column="2" Color="Blue" /> <Grid x:Name="RightGrid" Grid.Row="0" Grid.Column="2"> <!-- ContentPage 規劃成三列一行--> <Grid.RowDefinitions> <RowDefinition Height="2.5*"/> <RowDefinition Height="4.5*" /> <RowDefinition Height="3.5*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> </Grid.ColumnDefinitions> <Border Stroke="#C49B33" Grid.Row="0" Grid.Column="0" StrokeThickness="2" StrokeShape="RoundRectangle 10,10,10,10" Background="Blue" Padding="3,3,3,3"> <Grid x:Name="CategoryGrid" Grid.Row="0" Grid.Column="0" Margin="3" RowSpacing="3" ColumnSpacing="3"> <Grid.RowDefinitions> <RowDefinition Height="0.5*"/> <RowDefinition Height="*" /> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <BoxView Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Color="White" /> <local:CustomButton Grid.Row="1" Grid.Column="0" x:Name="Btn00" Text="Btn00"/> <local:CustomButton Grid.Row="1" Grid.Column="1" x:Name="Btn01" Text="Btn01"/> <local:CustomButton Grid.Row="1" Grid.Column="2" x:Name="Btn02" Text="Btn02"/> <local:CustomButton Grid.Row="1" Grid.Column="3" x:Name="Btn03" Text="Btn03"/> <local:CustomButton Grid.Row="2" Grid.Column="0" x:Name="Btn04" Text="Btn04"/> <local:CustomButton Grid.Row="2" Grid.Column="1" x:Name="Btn05" Text="Btn05"/> <local:CustomButton Grid.Row="2" Grid.Column="2" x:Name="Btn06" Text="Btn06"/> <local:CustomButton Grid.Row="2" Grid.Column="3" x:Name="Btn07" Text="Btn07"/> </Grid> </Border> <BoxView Grid.Row="1" Grid.Column="0" Color="Green"/> <BoxView Grid.Row="2" Grid.Column="0" Color="Red"/> </Grid> </Grid> <BoxView Grid.Row="1" Grid.Column="0" Color="Blue"/> <Border Stroke="#C49B33" Grid.Row="1" Grid.Column="0" StrokeThickness="2" StrokeShape="RoundRectangle 10,10,10,10" Background="Blue" Padding="3,3,3,3"> </Border> </Grid> </ContentPage>
MainPage.xaml.cs code
using VPOS.CustomControls; namespace VPOS { public partial class MainPage : ContentPage { public CustomButton [] CategoryBtn = new CustomButton[8]; public MainPage() { InitializeComponent(); CategoryBtn[0] = Btn00; CategoryBtn[1] = Btn01; CategoryBtn[2] = Btn02; CategoryBtn[3] = Btn03; CategoryBtn[4] = Btn04; CategoryBtn[5] = Btn05; CategoryBtn[6] = Btn06; CategoryBtn[7] = Btn07; CategoryBtn[0].m_SID = 0; CategoryBtn[1].m_SID = 1; CategoryBtn[2].m_SID = 2; CategoryBtn[3].m_SID = 3; CategoryBtn[4].m_SID = 4; CategoryBtn[5].m_SID = 5; CategoryBtn[6].m_SID = 6; CategoryBtn[7].m_SID = 7; for(int i = 0;i< CategoryBtn.Length;i++) { CategoryBtn[i].Clicked += CategoryBtn_Clicked; } } private async void CategoryBtn_Clicked(object sender, EventArgs e) { CustomButton CustomButtonBuf = (CustomButton)(sender); await DisplayAlert("Alert", $"{CustomButtonBuf.m_SID};{CustomButtonBuf.Text}", "OK");//await } private void CloseBtn_Clicked(object sender, EventArgs e) { // Close the active window //https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/windows Application.Current.CloseWindow(GetParentWindow()); } } }