自定义ListViewItem(UWP)的DragUI

问题描述 投票:0回答:1

ListView提供了一个DragItemsStarting事件,它附带事件参数。然而,与DragStartingEventArgs不同 - 与其他元素相同 - 据我所知,它不提供DragUI。我唯一的选择是使用非常烦人的DragOver事件。

所以,我反而说我将使ListViewItem的内容可拖动。然而,这种情况适得其反,因为现在Click事件已经不再存在,或者只是很少。简单地说,我可以自定义DragUI而不是单击我的ListItems,或者DragUI看起来很糟糕,但我保留了我的功能。

是否可以获得自定义DragUI并使ListView处理单击?

c# listview uwp drag-and-drop drag
1个回答
0
投票

您仍然可以使用DragStarting,但您必须将其添加到DataTemplate中的项目内容本身:

<ListView>
   <ListView.ItemTemplate>
       <DataTemplate>
           <Grid CanDrag="True" DragStarting="ItemDragStartingHandler">
                ...
           </Grid>
       </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

如果这导致click事件无法正常工作,您可以尝试自定义ListViewItem容器本身,这可能有效。右键单击设计器或“文档大纲”窗口中的ListView,选择“编辑其他模板”,然后选择“编辑生成的项容器”。从最后一个菜单中选择编辑副本...

Edit additional templates

你会得到一个可能很长的Style,但在其中你会发现以下内容:

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="ListViewItem">
            <ListViewItemPresenter DragStarting="ItemDragStartingHandler" x:Name="Root" ...>

您可以将DragStarting事件应用于ListViewItemPresenter,这可能会满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.