![](/img/trans.png)
[英]How to get ObservableCollection item by ListView ContextAction?
[英]How to know the listView viewCell whose contextAction menuItem is clicked?
我在xaml中創建了一個listView(使用xamarin在線跨平台開發指南),如下所示:
<ListView x:Name="AccountsList" ItemSelected="AccountSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Clicked="OnEdit"
Text="Edit" />
<MenuItem Clicked="OnDelete"
Text="Delete" IsDestructive="True" />
</ViewCell.ContextActions>
<ViewCell.View>
<StackLayout Orientation="Vertical"
HorizontalOptions="StartAndExpand">
<Label Text="{Binding DeviceName}"
HorizontalOptions="CenterAndExpand"/>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我像這樣以編程方式分配ItemSource:AccountsList.ItemsSource = App.Database.GetAccounts();
這是我的“ onDelete”方法:
public void OnDelete (object sender, EventArgs e) {
var mi = ((MenuItem)sender);
DisplayAlert("Delete Context Action", mi.Command + " delete context action", "OK");
}
我想知道單擊菜單項的特定viewCell,即從上述“ onDelete”方法引用該對象的“ DeviceName”。 我知道我可以使用listView的“ ItemSelected”方法來做到這一點:
void AccountSelected(object sender, SelectedItemChangedEventArgs e)
{
var _account = (Account)e.SelectedItem;
// And access the account here.
}
但是,“ Clicked”方法不允許“ void OnDelete(對象發送者,SelectedItemChangedEventArgs e)”簽名(而且我懷疑它是否仍然可以工作)。
我該怎么做?
您可以綁定行的記錄ID,類似於以下示例,
<MenuItem Clicked="OnDelete" Text="Delete" IsDestructive="True" CommandParameter="{Binding RecordIdentifier}"/>
在OnDelete
事件處理程序上,您可以從CommandParameter
獲得我們之前綁定的記錄ID,類似於以下示例,
public void OnDelete (object sender, EventArgs e)
{
var mi = ((MenuItem)sender);
DisplayAlert("Delete Context Action", mi.CommandParameter + " delete context action", "OK");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.