我试图获取通过上下文菜单选择的列表框项目的值。我已经寻找了一个解决方案,我已经看到了一些答案,但他们都没有真正回答我的问题。我尝试的所有其他尝试只是给了我用于绑定数据的类的名称。这是 XAML:
<ListBox Name="pubKeyListBox" Height="150" Margin="0,177,0,0" VerticalAlignment="Top">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu Name="ContextMenu" >
<toolkit:MenuItem Name="email" Header="send via email" Click="email_Click" />
<toolkit:MenuItem Name="delete" Header="delete" Click="delete_Click" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Text="{Binding pubKey}" FontSize="24" Width="250"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
以及背后的代码:
private void email_Click(object sender, RoutedEventArgs e)
{
ListBoxItem selectedKey= this.pubKeyListBox.ItemContainerGenerator.ContainerFromItem((sender as MenuItem).DataContext) as ListBoxItem;
int selectedItem= pubKeyListBox.ItemContainerGenerator.IndexFromContainer(selectedKey);
string fileName = pubKeyListBox.Items[selectedItem].ToString();
}
之后,fileName 包含字符串“Vault.publicKey”,其中 publicKey,如前所述,是用于绑定数据的类的名称。
你能帮我解决这个问题吗?谢谢你。