WPF ListView - 如何复制单个单元格

时间:2011-05-03 18:07:11

标签: wpf listview clipboard

我有代码,我可以查看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;
                }

}         }

1 个答案:

答案 0 :(得分:2)

我通过处理ListView上的PreviewMouseRightButtonDown事件并检查e.OriginalSource是否为TextBlock来完成此操作。如果是这样,请将txtBlk.Text复制到剪贴板。此代码可以位于包含ListView的View的代码隐藏中,也可以作为附加到ListView的行为。如果需要使用上下文菜单来执行复制操作,请使用TextBlock字段来存储对TextBlock的引用,并在响应MenuItem单击(或命令执行)的方法中引用TextBlock。