You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MAUI中为UI元素添加上下文菜单?附报错代码求助

解决MAUI中UI元素上下文菜单报错问题

问题原因分析

  1. ContextActions API已废弃:你使用的Grid.ContextActions是Xamarin.Forms时代的旧API,MAUI已不再支持该属性,因此触发The attachable property 'ContextActions' was not found in type 'Grid'错误。
  2. 命名空间缺失:FlyoutBase属于Microsoft.Maui.Controls命名空间,若页面未正确引入该命名空间,会出现The type 'FlyoutBase' was not found报错。

解决方案

1. 替换为MAUI官方推荐的实现方式

移除旧的Grid.ContextActions代码,改用FlyoutBase.ContextFlyout实现上下文菜单,这是MAUI中官方支持的上下文菜单方案。

2. 确保命名空间正确

在XAML页面的根元素(如ContentPage)中,确认已包含MAUI核心命名空间(默认已添加,若仍报错可显式声明):

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:maui="clr-namespace:Microsoft.Maui.Controls;assembly=Microsoft.Maui.Controls"
             x:Class="YourAppNamespace.YourPage">

3. 正确的上下文菜单代码示例

以下是给Grid添加上下文菜单的完整正确代码:

<Grid>
    <!-- 绑定上下文菜单 -->
    <maui:FlyoutBase.ContextFlyout>
        <MenuFlyout>
            <MenuFlyoutItem Text="Test" Clicked="TestMenuItem_Clicked" />
            <MenuFlyoutItem Text="Test 2" Clicked="Test2MenuItem_Clicked" />
        </MenuFlyout>
    </maui:FlyoutBase.ContextFlyout>

    <!-- Grid的子元素 -->
    <Label Text="右键/长按打开上下文菜单" />
</Grid>

4. 后台事件处理(可选)

在页面的代码文件中添加菜单点击事件逻辑:

private void TestMenuItem_Clicked(object sender, EventArgs e)
{
    // 处理Test菜单点击逻辑
}

private void Test2MenuItem_Clicked(object sender, EventArgs e)
{
    // 处理Test2菜单点击逻辑
}

额外注意

你提供的旧代码中存在拼写错误:</Grd.ContextActions>应为</Grid.ContextActions>,但这不是核心问题,核心是API已过时。

内容的提问来源于stack exchange,提问作者Nikolay Kusch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 02:15:59