【问题标题】:How can I customize the view shown during drag and drop?如何自定义拖放过程中显示的视图?
【发布时间】:2016-09-07 20:07:03
【问题描述】:

我在我的 UWP 应用上进行了拖放设置,我想自定义用户拖动的视图。目前它与ListViewItem 完全相同,但它有一个Border(提供背景和圆形边缘)我不想在拖动视图中显示。

这只是一个简单的CanDragItemsAllowDropDragItemsStartingDragEnterDrop 事件挂钩。

有没有办法做到这一点?

【问题讨论】:

  • 你能分享你的代码吗?
  • 这只是一个简单的CanDragItemsAllowDropDragItemsStartingDragEnterDrop 事件挂钩。我不知道还有什么可以分享的。
  • 你能分享一张gif/截图吗?
  • 什么边框? ListViewitem的边框?拖动视图中的箭头?
  • @Sunteen 它是Border,它是我的ListViewItem 的唯一孩子,它提供圆角和背景

标签: c# windows-store-apps win-universal-app


【解决方案1】:

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

要移除ListviewItem中的Bolder,不需要自定义拖拽视图,只需将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>

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

如果您仍想自定义拖动 UI,有一个现有的类 DragUIOverride 您可以直接用于自定义拖动视图。 例如你不想在拖动视图中显示箭头,你可以像这样在DragOver事件中设置IsGlyphVisible属性:

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

官方样例是XamlDragAndDrop,scenario2展示了DragUI的自定义细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多