//Register view models 注册ViewModelbuilder.Services.AddSingleton<OAuthViewModel>();builder.Services.AddSingleton<EmailListViewModel>();builder.Services.AddSingleton<EmailSenderViewModel>();
//Register Pages 注册Page
builder.Services.AddSingleton<OAuthPage>();builder.Services.AddSingleton<EmailListPage>();builder.Services.AddSingleton<EmailSenderPage>();
//启动App 加载Key
public App() { InitializeComponent();
MainPage = new AppShell(); }
protected override async void OnStart() { // Check if the client secrets are already stored var clientId = await SecureStorage.GetAsync("ClientId"); if (string.IsNullOrEmpty(clientId)) { // Secrets are not stored, store them now await StoreClientSecretsAsync(); } }
public AppShell(){InitializeComponent();// Register routes for pages not listed in the ShellContentRouting.RegisterRoute("medicalrecords", typeof(MedicalRecordsPage));Routing.RegisterRoute(nameof(AddEditVetContactPage), typeof(AddEditVetContactPage));} <!-- Loading Indicator -->
<ActivityIndicator
Grid.Row="2"
IsRunning="{Binding IsBusy}"
IsVisible="{Binding IsBusy}"
Color="#2196F3"
VerticalOptions="Center"
HorizontalOptions="Center" />
<!-- Email List --> <CollectionView Grid.Row="1" ItemsSource="{Binding Emails}" Margin="0,10,0,0"> <CollectionView.ItemTemplate> <DataTemplate x:DataType="models:EmailModel"> <Frame Padding="15" Margin="10" HasShadow="True" BackgroundColor="MediumSlateBlue" BorderColor="#B0BEC5" CornerRadius="12"> <StackLayout> <Label Text="{Binding Subject}" FontAttributes="Bold" TextColor="White" FontSize="18"/> <Label Text="{Binding From}" TextColor="#B0BEC5" FontSize="14"/> <Label Text="{Binding Date}" FontAttributes="Italic" TextColor="LightGray" FontSize="12"/> </StackLayout> </Frame> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView>
var builder = MauiApp.CreateBuilder(); builder .AddAudio() .RegisterViews() .RegisterViewModels() .RegisterServices()public static MauiAppBuilder RegisterViews(this MauiAppBuilder builder){builder.Services.AddScoped<HomePage>();return builder;}public static MauiAppBuilder RegisterViewModels(this MauiAppBuilder builder){builder.Services.AddScoped<SpotifySearchViewModel>();return builder;}public static MauiAppBuilder RegisterServices(this MauiAppBuilder builder){builder.Services.AddTransient<IYoutubeService, YoutubeService>();return builder;}//导航参数[QueryProperty(nameof(Item), "Item")]public partial class ListDetailDetailViewModel : BaseViewModel{ [ObservableProperty] internal SampleItem? item; public ListDetailDetailViewModel(DataService dataService) : base(dataService) { Title = "List Detail Detail"; }}private async Task GoToDetails(SampleItem item){ await Shell.Current.GoToAsync(nameof(ListDetailDetailPage), true, new Dictionary<string, object> { { "Item", item } });}