WPF列表框复制到剪贴板

我试图将标准的WPF列表框选中的项目(显示)文本复制到CTRL + C上的剪贴板。 有没有简单的方法来实现这一目标。 如果它是适用于所有列表框的东西,他应用程序..这将是伟大的。

提前致谢。

当你在WPF中时,你可以尝试附加的行为
首先你需要一个这样的类:

public static class ListBoxBehaviour { public static readonly DependencyProperty AutoCopyProperty = DependencyProperty.RegisterAttached("AutoCopy", typeof(bool), typeof(ListBoxBehaviour), new UIPropertyMetadata(AutoCopyChanged)); public static bool GetAutoCopy(DependencyObject obj_) { return (bool) obj_.GetValue(AutoCopyProperty); } public static void SetAutoCopy(DependencyObject obj_, bool value_) { obj_.SetValue(AutoCopyProperty, value_); } private static void AutoCopyChanged(DependencyObject obj_, DependencyPropertyChangedEventArgs e_) { var listBox = obj_ as ListBox; if (listBox != null) { if ((bool)e_.NewValue) { ExecutedRoutedEventHandler handler = (sender_, arg_) => { if (listBox.SelectedItem != null) { //Copy what ever your want here Clipboard.SetDataObject(listBox.SelectedItem.ToString()); } }; var command = new RoutedCommand("Copy", typeof (ListBox)); command.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Control, "Copy")); listBox.CommandBindings.Add(new CommandBinding(command, handler)); } } } } 

然后你有这样的XAML

       

更新:对于最简单的情况,您可以通过以下方式访问文本:

 private static string GetListBoxItemText(ListBox listBox_, object item_) { var listBoxItem = listBox_.ItemContainerGenerator.ContainerFromItem(item_) as ListBoxItem; if (listBoxItem != null) { var textBlock = FindChild(listBoxItem); if (textBlock != null) { return textBlock.Text; } } return null; } GetListBoxItemText(myListbox, myListbox.SelectedItem) FindChild is a function to find a child of type T of a DependencyObject 

但就像ListBoxItem可以绑定到对象一样,ItemTemplate也可以是不同的,所以你不能在实际项目中依赖它。