C# WINDOWS MAUI專案 ComboBox(Picker) 使用範例
C# WINDOWS MAUI專案 ComboBox(Picker) 使用範例
GITHUB: https://github.com/jash-git/MAUI_WinAPI_Object_test/tree/main/Code/24
XAML
<?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:MAUI_WinAPI_Object_test.CustomControls" xmlns:drawable="clr-namespace:MAUI_WinAPI_Object_test" x:Class="MAUI_WinAPI_Object_test.MainPage" Title=""> <ContentPage.Resources> <drawable:GraphicsDrawable x:Key="drawable01" /> </ContentPage.Resources> <ScrollView> <VerticalStackLayout Spacing="25" Padding="30,0" VerticalOptions="Center"> <Picker x:Name="Picker01" FontSize="Subtitle" Title="" SelectedIndexChanged="Picker01_SelectedIndexChanged" HorizontalOptions="Center" WidthRequest="500"/> <GraphicsView Drawable="{StaticResource drawable01}" HeightRequest="40" WidthRequest="30" /> <local:CustmImageButton HorizontalOptions="Center"/> <Image Source="dotnet_bot.png" SemanticProperties.Description="Cute dot net bot waving hi to you!" HeightRequest="200" /> <Label x:Name="labtime" SemanticProperties.HeadingLevel="Level1" FontSize="32" HorizontalOptions="Center" /> <Label x:Name="labDisplayInfo" Text="Welcome to .NET Multi-platform App UI" SemanticProperties.HeadingLevel="Level2" SemanticProperties.Description="Welcome to dot net Multi platform App U I" FontSize="18" HorizontalOptions="Center" /> <Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Center" /> <local:CustomButton x:Name="PopupBtn" Text="Show Popup" CustomProperty="這是自訂屬性的值" Clicked="PopupBtn_Clicked" HorizontalOptions="Center" /> <local:CardControl Title="Hello CardControl"/> <local:BadgeButton WidthRequest="150" HeightRequest="75"></local:BadgeButton> <local:BadgeButton WidthRequest="300" HeightRequest="150"></local:BadgeButton> <Button x:Name="CloseBtn" Text="Close" Clicked="CloseBtn_Clicked" HorizontalOptions="Center" /> </VerticalStackLayout> </ScrollView> </ContentPage>
C# Code
using CommunityToolkit.Maui.Views; using System.Threading; using MAUI_WinAPI_Object_test.Views; using MAUI_WinAPI_Object_test.CustomControls; using System.Collections.ObjectModel; namespace MAUI_WinAPI_Object_test { //--- //Picker 型態區 public class CountryModel { public string Country_Name { get; set; } public string Country_Short_Name { get; set; } } //---Picker 型態區 public partial class MainPage : ContentPage { //--- //Picker 變數區 public ObservableCollection<CountryModel> CountryList { get; set; } = new ObservableCollection<CountryModel>(); public CountryModel m_SelectedCountry{ get; set; } = new CountryModel(); public int m_SelectedCountryIndex = -1; //---Picker 變數區 public int count = 0; public IDispatcherTimer timmer { get; set; } public Thread thread; public bool blnStop = false; public MainPage() { InitializeComponent(); //--- //Picker 變數初始化 CountryModel CountryModelBuf00 = new CountryModel(); CountryModel CountryModelBuf01=new CountryModel(); CountryModel CountryModelBuf02 = new CountryModel(); CountryModelBuf00.Country_Name = "台北市"; CountryModelBuf00.Country_Short_Name = "台北"; CountryModelBuf01.Country_Name = "台中市"; CountryModelBuf01.Country_Short_Name = "台中"; CountryModelBuf02.Country_Name = "高雄市"; CountryModelBuf02.Country_Short_Name = "高雄"; CountryList.Add(CountryModelBuf00); CountryList.Add(CountryModelBuf01); CountryList.Add(CountryModelBuf02); Picker01.ItemsSource= CountryList; Picker01.ItemDisplayBinding = new Binding("Country_Short_Name"); //---Picker 變數初始化 //* //--- //Timer Mode //https://learn.microsoft.com/en-us/answers/questions/1207012/how-to-stop-device-starttimer timmer = Application.Current.Dispatcher.CreateTimer(); timmer.Interval = new TimeSpan(0, 0, 0, 0, 100);//天/時/分/秒/毫秒 timmer.Tick += Timmer_Tick; timmer.IsRepeating = true;//the timer will keep recurring, you can set false timmer.Start(); //---Timer Mode //*/ // 在新執行緒中執行工作 /* thread = new Thread(ThreadFun); thread.Start(); */ } private void Timmer_Tick(object sender, EventArgs e) { //--- //抓螢幕解析度 var displayInfo = DeviceDisplay.MainDisplayInfo; double width = displayInfo.Width; double height = displayInfo.Height; double density = displayInfo.Density; //---抓螢幕解析度 labDisplayInfo.Text = $"{width} x {height} ; {density}"; labtime.Text = DateTime.Now.ToString("HH:mm:ss"); } [Obsolete] private void ThreadFun() { do { // 更新使用者介面 (UI) 元素 Device.BeginInvokeOnMainThread(() => { // 在這裡更新 UI 控制項 labtime.Text = DateTime.Now.ToString("HH:mm:ss"); }); Thread.Sleep(1000); } while (!blnStop); } private void OnCounterClicked(object sender, EventArgs e) { count++; if (count == 1) CounterBtn.Text = $"Clicked {count} time"; else CounterBtn.Text = $"Clicked {count} times"; SemanticScreenReader.Announce(CounterBtn.Text); } private void CloseBtn_Clicked(object sender, EventArgs e) { if (timmer != null) { timmer.Stop(); } if (thread != null) { blnStop = true; thread = null; } // Close the active window //https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/windows Application.Current.CloseWindow(GetParentWindow()); } private async void PopupBtn_Clicked(object sender, EventArgs e) { //await DisplayAlert("Alert", $"路徑:{AppDomain.CurrentDomain.BaseDirectory}", "OK");//await Class_Test.MainPagePoint = this; //await Class_Test.ShowPopup(); //int i=await CallShowPopup(); //if (await Class_Test.CallShowPopup()>100) if (await Class_Call.CallShowPopup() > 100) { labtime.IsVisible = !labtime.IsVisible;//元件隱藏/顯示 await DisplayAlert("Alert", $"{PopupBtn.CustomProperty};{PopupPage1.m_StrResult}", "OK");//await } } private async Task<int> CallShowPopup() { int intResult = 0; await Class_Test.ShowPopup(); return intResult; } private void Picker01_SelectedIndexChanged(object sender, EventArgs e) { m_SelectedCountry = (CountryModel)Picker01.SelectedItem; m_SelectedCountryIndex = Picker01.SelectedIndex; } } }
One thought on “C# WINDOWS MAUI專案 ComboBox(Picker) 使用範例”
C# WINDOWS MAUI專案 ComboBox(Picker) 使用範例 下拉式選單