概述
TelerikRadListBox控件通过其丰富的拖放功能进一步增强了应用程序的功能。您可以轻松地执行各种拖放操作。
本帮助主题将详细解释中的拖放功能RadListBox控制。我们将讨论以下主题:
我们将分别讨论它们。
在带有静态声明项的ListBox控件之间的拖放功能不受支持,但支持重新排序功能。
附加行为
的拖放功能RadListBox可以通过设置其DragDropBehavior属性启用。你应该使用放置在Telerik.Windows.Controls.dll中的ListBoxDragDropBehavior类,它准备好处理ListBox项的拖放。
- 添加对Telerik.Windows.Controls.dll的引用,并将以下XML名称空间添加到XAML中:
例1:引用Telerik.Windows.Controls.dll
xmlns: telerik = "http://schemas.telerik.com/2008/xaml/presentation"
- 创建一个RadListBoxItem样式,将启用RadListBoxItem控件的拖动:
例2:RadListBoxItem样式
<用户控件。资源>
如果你在使用隐式风格注意,针对RadListBoxItem的Style应该基于默认值RadListBoxItemStyle.
例3:NoXAML中的RadListBoxItem样式
<用户控件。资源>
- 附加ListBoxDragDropBehavior行为:
例4:附加ListBoxDragDropBehavior
< / telerik: RadListBox >
特性
DragVisualProvider
DragVisualProvider通过提供不同的可视DragCue来丰富RadListBox控件的拖放功能。
为了启用可视DragCue,提供者需要附加到ListBox控件:
例5:加载DragVisualProvider
< telerik: RadListBox。DragVisualProvider >
- EmptyDragVisualProvider:默认的DragVisualProvider。它不提供被拖动项的任何可视化表示。
的ListBoxDragVisualProviderDragCue可以被修改,以拥有旧的外观。您可以找到一个可运行的项目,它演示了实现该目标的确切方法在线SDK资源库.
- ScreenshotDragVisualProvider:提供被拖动项的精确可视化表示。
在这里.
多种条目拖
时,拖放功能也可以开箱即用SelectionMode是多个或扩展.
调试时,Visual Studio放置调试器工具栏在拖动可视对象上,如果在拖动操作期间鼠标刚好在工具栏上,则不允许拖放。为了防止这种情况,可以在拖动之前最小化或删除工具栏,或者在没有调试器的情况下运行项目。
转换数据
在包含不同项目类型的控件之间拖放的场景中,拖放的数据应该使用DataConverter进行转换。下面的示例展示了如何在两个RadListBox控件之间转换数据时创建一个自定义DataConverter,其中一个包含类型为Product的项,另一个包含类型为Order的项。
- 创建一个新类,从DataConverter派生并重写GetConvertToFormats()和ConvertTo()。以下方法可以将数据从Product转换为Order:
例6:覆盖GetConvertToFormats和ConvertTo
公共类ProductToOrderConverter: DataConverter{公共覆盖字符串[]GetConvertToFormats(){返回新字符串[]{typeof(产品)。FullName, typeof(秩序)。FullName};}公共覆盖对象ConvertTo(对象数据,字符串格式){var payload = (IEnumerable)DataObjectHelper.}GetData(data, typeof(Product), false);if (payload != null){返回payload. oftype <产品>()。Select(a => new Order {Name = a.Name, Quantity = 1});}返回null;}}
例7:RadListBox的最终配置
< telerik: RadListBox。DragDropBehavior> < telerik: RadListBox。DataConverter> . DataConverter> 另请参阅