我有代码,我可以查看SelectedItem,然后输出ToString()以将记录放入剪贴板。
如何检测用户右键单击的单元格,以便仅复制SelectedItem中的该单元格?
例如,如果我有借款人信息并且用户右键单击姓氏,我希望能够将姓氏复制到剪贴板。
谢谢!
更新:
以下是Josh建议使用的代码,效果很好:
private void BorrowerInfoCopyClicked(object sender, RoutedEventArgs e)
{
BorrowerViewModel vm = this.DataContext as BorrowerViewModel;
if (vm != null)
{
Clipboard.SetData(DataFormats.Text, vm.CurrentTextBlockText);
}
}
private void AddressCopyClicked(object sender, RoutedEventArgs e)
{
BorrowerViewModel vm = this.DataContext as BorrowerViewModel;
if (vm != null)
{
Clipboard.SetData(DataFormats.Text, vm.CurrentTextBlockText);
}
}
private void lstViews_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
BorrowerViewModel vm = this.DataContext as BorrowerViewModel;
if (vm != null)
{
if (e.OriginalSource is TextBlock)
{
TextBlock txtBlock = e.OriginalSource as TextBlock;
vm.CurrentTextBlockText = txtBlock.Text;
}
} }
答案 0 :(得分:2)
我通过处理ListView上的PreviewMouseRightButtonDown事件并检查e.OriginalSource是否为TextBlock来完成此操作。如果是这样,请将txtBlk.Text复制到剪贴板。此代码可以位于包含ListView的View的代码隐藏中,也可以作为附加到ListView的行为。如果需要使用上下文菜单来执行复制操作,请使用TextBlock字段来存储对TextBlock的引用,并在响应MenuItem单击(或命令执行)的方法中引用TextBlock。