#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 Тип «Меню» не найден. Убедитесь, что вы не пропустили ссылку на сборку и что все сборки, на которые имеются ссылки, были созданы.
Может ли кто-нибудь указать мне правильное направление?
Спасибо.
ПРАВКА 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 Присоединяемое свойство «Контекстные действия» не было найдено в типе «Ячейка просмотра».
Ответ №1:
Ошибка XLS0414 Тип «Меню» не найден. Убедитесь, что вы не пропустили ссылку на сборку и что все сборки, на которые имеются ссылки, были созданы.
Из класса меню документа мы знаем,что этот класс MenuFlyout
является классом в 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
Комментарии:
1. Привет. Так что это довольно похоже / в основном то же самое, что и во втором примере, который я пробовал — перечислено в разделе Редактирование 1. Но я получаю ошибку, как (сейчас) показано в разделе Редактирование 1.
2. чтобы заставить код работать, мне просто нужно было определить контекстное действие перед фактическим выводом стека, которое я изменил на сетку.