【发布时间】:2017-12-05 11:13:45
【问题描述】:
我已经设置了一个 ListView 来管理我的应用程序上的选项卡。因此,用户可以将选项卡拖放到应用程序的新实例并重新排序选项卡。一切都很好,直到我在 ListView 上为 Itens 设置了 ControlTemplate。
我使用 ControlTemplate 是因为当我直接添加 ListView.ItemTemplate 时它不起作用(它不会影响 listview 项)。所以在添加一个新项目之前,我使用这个:
tab.Template = (ControlTemplate)this.Resources["listViewItemTemplate"];
所以选项卡看起来很棒,但所有过去可以工作的功能(如拖放)都不再工作了。当我删除 ControlTemplate 时,ListView 只显示一个小字符串。
这就是正在发生的事情
我的 ListView 代码:
<ListView x:Name="TabsListView"
CanDragItems="True"
AllowDrop="True"
DragEnter="TabsListView_DragEnter"
Drop="TabsListView_Drop"
ScrollViewer.VerticalScrollBarVisibility="Disabled
CanReorderItems="True"
DragItemsStarting="TabsListView_DragItemsStarting"
ItemClick="TabsListView_ItemClick" >
我确定问题不在于拖放方法。
要创建一个新项目,我只需使用 Add。当然,我检查了 ControlTemplate 中的每个项目,知道它没有阻止任何东西。
控件模板为:
<ControlTemplate x:Key="listViewItemTemplate" >
<ListViewItem>
<Grid Tapped="Grid_Tapped" Width="180" Margin="-12,-12,-12,0">
<TextBlock Text="{Binding Name}" Margin="5,6,0,0"></TextBlock>
</Grid>
</ListViewItem>
</ControlTemplate>
【问题讨论】:
-
那是因为您不应该更改
ContentTemplate... 它具有拖放功能的所有挂钩,您将其替换为数据模板...跨度> -
但是@JustinXL 我需要在 ListView 项目中包含一些样式和其他信息。没有 ContentTemplate 怎么办?
-
如果您想要不同的样式,请在列表视图项的样式中进行。
-
我不认为可以从样式中插入按钮或右键单击菜单上下文。我明白你的意思,但这对我不起作用。将再次尝试将其更改为 DataTemplate,但每次添加新项目 id 时都没有遵循我设置的 DataTemplate。
-
对我来说这两种声音都是可能的。但是如果你真的想要自己的控件模板,你应该考虑构建自己的拖放逻辑。
标签: c# xaml listview uwp windows-10-universal