我正在Xamarin中创建一个菜单。我想禁用所有MenuItemType.None的菜单项。对于用户选择,应该禁用/跳过这些项。(MenuItemType.None的项应该“充当标题”)
我有以下代码:
MainPage RootPage { get => Application.Current.MainPage as MainPage; }
List<HomeMenuItem> menuItems;
object lastSelectedItem = null;
public MenuPage()
{
InitializeComponent();
menuItems = new List<HomeMenuItem>
{
new HomeMenuItem {Id = MenuItemType.None, Title = "N" },
new HomeMenuItem {Id = MenuItemType.A, Title="A" },
new HomeMenuItem {Id = MenuItemType.B, Title="B" },
new HomeMenuItem {Id = MenuItemType.C, Title="C" },
new HomeMenuItem {Id = MenuItemType.D, Title="D" },
new HomeMenuItem {Id = MenuItemType.E, Title="E" },
new HomeMenuItem {Id = MenuItemType.F, Title="F" }
};
ListViewMenu.ItemsSource = menuItems;
ListViewMenu.SelectedItem = menuItems[1];
ListViewMenu.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null)
return;
var id = (int)((HomeMenuItem)e.SelectedItem).Id;
if (id == (int)MenuItemType.None)
return;
await RootPage.NavigateFromMenu(id);
};
}
EDIT 1:我试过这样做,但我不知道如何访问集合项:
for (int i = 0; i < ((List<HomeMenuItem>)ListViewMenu.ItemsSource).Count; i++)
{
if (((List<HomeMenuItem>)ListViewMenu.ItemsSource)[i].Id == MenuItemType.None)
{
?.isEnabled = false;
}
}
EDIT2:MenuPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Sts.Views.MenuPage"
Title="Menu">
<StackLayout VerticalOptions="FillAndExpand">
<ListView x:Name="ListViewMenu"
HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="10">
<Image Source="" /><Label Text="{Binding Title}" FontSize="20"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
1条答案
按热度按时间rqmkfv5c1#
没有一个这样的方法可以禁用ListView的一个项。
具有MenuItemType的项。无项应“充当标头”
可以将MenuItemType.None的项放到ListView的头中,并将其他项作为ListView的项源。
另外,当用户选择MenuItemType.None的项目时,也可以将SelectedItem设置为null。例如: