gpt4 book ai didi

c# - 我可以根据条件禁用 ViewCell.ContextActions

转载 作者:太空狗 更新时间:2023-10-29 22:21:36 24 4
gpt4 key购买 nike

您好,我使用 Xamarin Forms ListView,我想知道我是否可以基于特定绑定(bind)或在后面的代码中禁用上下文操作。

我为整个应用程序使用一个 GroupedListView,但它会根据用户的操作显示不同的数据。有一个“管理您的收藏夹”功能,我希望用户能够在 iOS 上滑动删除或在 android 上长按以删除 ListItem,但如果列表显示某些搜索,我不希望出现这种行为结果或其他东西

<ViewCell.ContextActions>
<MenuItem Text="Delete" IsDestructive="true" CommandParameter="{Binding .}" Command="{Binding Path=BindingContext.OnDeleteCommand, Source={x:Reference Name=ListViewPage}}"/>
</ViewCell.ContextActions>

这并没有禁用它...

<ViewCell.ContextActions IsEnabled="false"> //This IsEnabled does nothing
<MenuItem Text="Delete" IsDestructive="true" CommandParameter="{Binding .}" Command="{Binding Path=BindingContext.OnDeleteCommand, Source={x:Reference Name=ListViewPage}}"/>
</ViewCell.ContextActions>

如何禁用 ContextActions?我不希望用户总是能够滑动

最佳答案

为了实现我想要实现的目标,我做了以下...

在 XAML 中

<ViewCell BindingContextChanged="OnBindingContextChanged">

在后面的代码中

private void OnBindingContextChanged(object sender, EventArgs e)
{
base.OnBindingContextChanged();

if (BindingContext == null)
return;

ViewCell theViewCell = ((ViewCell)sender);
var item = theViewCell.BindingContext as ListItemModel;
theViewCell.ContextActions.Clear();

if (item != null)
{
if (item.ListItemType == ListItemTypeEnum.FavoritePlaces
|| item.ListItemType == ListItemTypeEnum.FavoritePeople)
{
theViewCell.ContextActions.Add(new MenuItem()
{
Text = "Delete"
});
}
}
}

根据我们正在处理的列表项类型,我们可以决定在何处放置上下文操作

关于c# - 我可以根据条件禁用 ViewCell.ContextActions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com