老规矩,在AppShell.xaml.cs代码中,添加一行代码,把这个demo加到导航栏中。
this.Navigate("MauiViews.MauiDemos.Book._02.NonCompiledXaml");
因为要使用到CommunityToolkit中的DockLayout,所以请在NuGet包中搜索下面。

然后在MauiProgram.cs指定调用这个包。
using CommunityToolkit.Maui;
using Syncfusion.Maui.Toolkit.Hosting;
namespace MauiViews
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit() //写入这条代码即可
.UseMauiCommunityToolkitMediaElement()
.ConfigureSyncfusionToolkit()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
fonts.AddFont("IconFont.ttf", "IconFont");
fonts.AddFont("Roboto-Medium.ttf", "RobotoMedium");
fonts.AddFont("Roboto-Regular.ttf", "Roboto");
fonts.AddFont("SyncFontIcons.ttf", "SyncFontIcons");
fonts.AddFont("SegmentIcon.ttf", "SegmentIcon");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
}
}
NonCompiledXaml.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:tk="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" x:Class="MauiViews.MauiDemos.Book._02.NonCompiledXaml" Title="NonCompiledXaml"> <tk:DockLayout> <Button x:Name="button1" Text="Please Click Me" Margin="30"/> </tk:DockLayout> </ContentPage>
对应的cs文件代码如下
namespace MauiViews.MauiDemos.Book._02;
public partial class NonCompiledXaml : ContentPage
{
public NonCompiledXaml()
{
InitializeComponent();
// 这里可以添加其他初始化代码
WidthRequest = HeightRequest = 285;
LoadXamlContent("D://Codes//CSharp//Maui//MauiViews//MauiDemos//Book//02//NonCompiledXaml.xaml");
}
private void LoadXamlContent(string xamlFile)
{
try
{
if (!File.Exists(xamlFile))
{
DisplayAlert("Error", "XAML file not found", "OK");
return;
}
string xamlContent = File.ReadAllText(xamlFile);
var contentPage = new ContentPage();
contentPage.LoadFromXaml(xamlContent);
this.Content = contentPage.Content;
button1 = (Button)contentPage.FindByName("button1");
if (button1 == null)
{
DisplayAlert("Warning", "Button not found in XAML", "OK");
return;
}
button1.Clicked += Button1_Clicked;
}
catch (Exception ex)
{
DisplayAlert("Error", $"Load failed: {ex.Message}", "OK");
}
}
private void Button1_Clicked(object? sender, EventArgs e)
{
button1.Text = "Thank you.";
}
}
运行结果如下(点击按钮后)

浙公网安备 33010602011771号