簡體   English   中英

如何知道單擊了contextAction menuItem的listView viewCell?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM