xaml - 如何将上下文菜单添加到 xamarin UWP 应用程序中的列表项?
问题描述
我有以下 xaml 代码:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:GraphTutorial.Models"
Title="Shared Document Library"
x:Class="GraphTutorial.SPDocumentLibraryContentsPage">
...
...
<ListView x:Name="SharedDocumentList"
HasUnevenRows="true"
Margin="10,10,10,10"
ItemSelected="OnItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="10,10,10,10">
<Label Text="{Binding Path=Id}"
FontAttributes="Bold"
FontSize="Medium" />
<Label Text="{Binding Path=WebUrl}"
FontSize="Small" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Resources>
<MenuFlyout x:Name="DocumentActions">
<FlyoutItem x:Name="Edit" Text="Edit" />
<FlyoutItem x:Name="Remove" Text="Remove" Click="Remove_Click" />
</MenuFlyout>
</ListView.Resources>
</ListView>
我目前在线收到以下错误消息:
错误 XLS0414 找不到类型“MenuFlyout”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。
有人可以指出我正确的方向吗?
谢谢。
编辑 1
我也试过这个:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:GraphTutorial.ContextMenu"
Title="Shared Document Library"
x:Class="GraphTutorial.SPDocumentLibraryContentsPage">
<ListView x:Name="SharedDocumentList"
HasUnevenRows="true"
Margin="10,10,10,10"
ItemSelected="OnItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="10,10,10,10">
<Label Text="{Binding Path=Id}"
FontAttributes="Bold"
FontSize="Medium" />
<Label Text="{Binding Path=WebUrl}"
FontSize="Small" />
</StackLayout>
</ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Add" Clicked="Add_Clicked"></MenuItem>
<MenuItem Text="Delete" Clicked="Delete_Clicked"></MenuItem>
<MenuItem Text="Edit" Clicked="Edit_Clicked">
</ViewCell.ContextActions>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但这会返回错误:
XLS0415 在“ViewCell”类型中找不到可附加属性“ContextActions”。
解决方案
错误 XLS0414 找不到类型“MenuFlyout”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。
从文档MenuFlyout Class中,我们知道 classMenuFlyout
是 uwp 中的一个类,所以我们不能在 xamarin 中使用它。
如果要在 中的列表项中添加上下文菜单xamarin UWP
,可以参考以下代码:
<ListView x:Name="listView" Margin="20" ItemSelected="OnListItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="20,0,0,0" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<Label Text="{Binding Name}" VerticalTextAlignment="Center" HorizontalOptions="StartAndExpand" />
<Image Source="check.png" HorizontalOptions="End" IsVisible="{Binding Done}" />
</StackLayout>
<ViewCell.ContextActions>
<MenuItem Text="Delete"
Clicked="OnDeleteClicked"/>
</ViewCell.ContextActions>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在 page.xaml.cs
void OnDeleteClicked(object sender, EventArgs e)
{
TodoItem itemToDelete = ((sender as MenuItem).BindingContext as TodoItem);
// other code
}
有关更多详细信息,您可以检查:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/menuitem
推荐阅读
- java - 邮递员原始身体响应为 400
- windows - 对 GENERIC_EXECUTE 的 OpenSCManager 调用失败
- c++ - constexpr 类中的引用字段
- r - R中的最大堆栈大小
- python-3.x - 如何修复此 Python Tic-Tac-Toe 代码错误
- kubernetes - 使用 python 客户端删除 Kubernetes 资源
- mysql - Trying to populate two tables with a pivot between them
- sql - 有条件地重新标记行值
- typescript - 在typescrpit中将字符串联合转换为字符串枚举
- python - Python Dataframe计算具有不同时间戳的行之间的TimeDifference