我开始使用 .NET MAUI。我刚开始开发就遇到了问题。我想显示一个弹出窗口,并且我正在使用社区工具包。
我所做的只是:
我创建了一个新的 .NET MAUI 应用程序项目,安装了社区工具包 NuGet 包(当然还有启动类中的 .UseMauiCommunityToolkit)并为弹出窗口添加了一个 XAML 文件:
<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="TestApp.ProfilePopup">
<VerticalStackLayout>
<Label Text="This is a very important message!" />
</VerticalStackLayout>
</toolkit:Popup>
Run Code Online (Sandbox Code Playgroud)
我没有这个弹出窗口的部分类
我刚刚修改了 MainPage 上的按钮以显示弹出窗口:
private void OnCounterClicked(object sender, EventArgs e)
{
var popup = new ProfilePopup();
this.ShowPopup(popup);
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此应用程序并单击按钮以显示弹出窗口,我将收到错误消息:
CommunityToolkit.Maui.Core.Handlers.PopupHandler found for TestApp.ProfilePopup is incompatible
如果我用 C# 创建弹出窗口,它会起作用:
private void OnCounterClicked(object sender, EventArgs e)
{
var popup = new Popup
{
Content = new VerticalStackLayout
{
Children =
{
new Label
{
Text = "This is a very important message!"
}
}
}
};
this.ShowPopup(popup);
}
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
谢谢你!
马库斯
我重现了错误消息。
原因:“我没有这个弹出窗口的部分类”。
那是行不通的。没有它,就没有InitializeComponent电话。结果不是有效的视图。
为了解决这个问题,
首先确保您已在以下位置注册了该工具包MauiProgram.cs:
using CommunityToolkit.Maui;
...
builder.UseMauiApp<App>().UseMauiCommunityToolkit();
Run Code Online (Sandbox Code Playgroud)
那么你一定有
文件ProfilePopup.xaml.cs包含:
using CommunityToolkit.Maui;
...
builder.UseMauiApp<App>().UseMauiCommunityToolkit();
Run Code Online (Sandbox Code Playgroud)
我使用以下步骤生成自定义视图:
MyView.xaml和MyView.xaml.cs.MyView.xaml,添加所需的 xmlns 并更改基类。public partial class ProfilePopup : CommunityToolkit.Maui.Views.Popup
{
public ProfilePopup()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
改成:
<ContentView xmlns=...
...
x:Class=...>
...
</ContentView>
Run Code Online (Sandbox Code Playgroud)
MyView.xaml.cs,更改基类。<toolkit:Popup xmlns=
...
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class=...>
...
</toolkit:Popup>
Run Code Online (Sandbox Code Playgroud)
改成:
public partial class ProfilePopup : ContentView
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7223 次 |
| 最近记录: |