c# – WPF列表框复制到剪贴板
发布时间:2020-12-15 18:13:57 所属栏目:百科 来源:网络整理
导读:我正在尝试将标准的 WPF列表框选择项(显示)文本到CTRL C上的剪贴板.有没有任何简单的方法来实现这一点.如果这是一个适用于所有的列表框的应用程序,那将是伟大的. 提前致谢. 解决方法 因为你在WPF中,所以你可以尝试附加的行为 首先你需要一个这样的课程: pub
我正在尝试将标准的
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 <ListBox sample:ListBoxBehaviour.AutoCopy="True"> <ListBox.Items> <ListBoxItem Content="a"/> <ListBoxItem Content="b"/> </ListBox.Items> </ListBox> 更新:对于最简单的情况,您可以通过以下方式访问文本: private static string GetListBoxItemText(ListBox listBox_,object item_) { var listBoxItem = listBox_.ItemContainerGenerator.ContainerFromItem(item_) as ListBoxItem; if (listBoxItem != null) { var textBlock = FindChild<TextBlock>(listBoxItem); if (textBlock != null) { return textBlock.Text; } } return null; } GetListBoxItemText(myListbox,myListbox.SelectedItem) FindChild<T> is a function to find a child of type T of a DependencyObject 但是就像ListBoxItem可以绑定到对象一样,ItemTemplate也可能是不同的,所以你不能依赖于真实的项目. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |