如何自定义在拖放过程中显示的视图?

问题描述:

我有我的UWP应用程序的拖放设置,我想定制用户拖动的视图。目前它与ListViewItem完全相同,但它有一个Border(提供背景和圆角边缘),我不想在拖动视图中显示。如何自定义在拖放过程中显示的视图?

这只是一个简单的CanDragItemsAllowDrop与迷上DragItemsStartingDragEnterDrop事件。

有没有办法做到这一点?

+1

你能分享你的代码吗? – aloisdg

+0

这只是一个简单的'CanDragItems'和'AllowDrop',它带有'DragItemsStarting','DragEnter'和'Drop'事件。我不知道还有什么可以分享的。 – vrwim

+1

你能分享一个gif /截图吗? – Quakenxt

但它有一个边框(提供背景和圆角边缘)我不想在拖动视图中显示。

要删除ListviewItemBolder,你不需要定制拖拽视图,你可以设置Bolder元素的子元素CanDrag,设置CanDrag属性为Bolder子元素后,如TextBlock ,拖动项目时不会看到Bolder效果。代码示例如下:

<ListView x:Name="SourceListView" 
       Header="SourceListView" 
       SelectionMode="Extended"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Border Background="Pink" 
         BorderBrush="Gray" 
         BorderThickness="2" 
         CornerRadius="10"> 
        <TextBlock Text="{Binding text}" DragStarting="TextBlock_DragStarting" CanDrag="True" /> 
       </Border> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

我想自定义用户拖动视图。

如果您仍想定制您的拖动用户界面,您可以直接使用现有的类DragUIOverride来定制您的拖动视图。 例如你不希望显示在拖动视图的箭头,你可以设置IsGlyphVisible属性在DragOver事件是这样的:

private void cnvDrop_DragOver(object sender, DragEventArgs e) 
{   
    e.DragUIOverride.IsGlyphVisible = false; 
} 

而官方样本XamlDragAndDrop,在scenario2显示有关DragUI的详细信息定制。