Telerik UI for WPF?下载30天免费试用

概述

TelerikRadListBox控件通过其丰富的拖放功能进一步增强了应用程序的功能。您可以轻松地执行各种拖放操作。

本帮助主题将详细解释中的拖放功能RadListBox控制。我们将讨论以下主题:

我们将分别讨论它们。

在带有静态声明项的ListBox控件之间的拖放功能不受支持,但支持重新排序功能。

附加行为

的拖放功能RadListBox可以通过设置其DragDropBehavior属性启用。你应该使用放置在Telerik.Windows.Controls.dll中的ListBoxDragDropBehavior类,它准备好处理ListBox项的拖放。

  • 添加对Telerik.Windows.Controls.dll的引用,并将以下XML名称空间添加到XAML中:

例1:引用Telerik.Windows.Controls.dll

  • 创建一个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 > 
DragVisualProvider可以设置为:
  • EmptyDragVisualProvider:默认的DragVisualProvider。它不提供被拖动项的任何可视化表示。

Radlistbox特性拖放0"></p>
         <ul>
          <li><strong>ListBoxDragVisualProvider</strong>:随着2014年第一季度WPF UI的发布<strong>ListBoxDragVisualProvider</strong>已改进,以提供额外的信息。现在它的DragCue也指示拖拽项的拖放位置——是否会<em>之前</em>或<em>后</em>以下项目。</li>
         </ul>
         <p>当光标指向下面项目的上半部分时,DragCue表示拖拽的项目将被删除<em>之前</em>项目:</p>
         <p><img src=

ListBoxDragVisualProviderDragCue可以被修改,以拥有旧的外观。您可以找到一个可运行的项目,它演示了实现该目标的确切方法在线SDK资源库

  • ScreenshotDragVisualProvider:提供被拖动项的精确可视化表示。

Radlistbox功能拖放1"></p>
         <ul>
          <li><strong>DefaultDragVisualProvider</strong>:提供被拖动项的字符串表示形式。</li>
         </ul>
         <p><img src=在这里.

多种条目拖

时,拖放功能也可以开箱即用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;}}
RadListBox控件在XAML中的最终配置应该如下所示:

例7:RadListBox的最终配置

    < telerik: RadListBox。DragDropBehavior>   < telerik: RadListBox。DataConverter>     . DataConverter>  另请参阅
         
        
在本文中
Baidu
map