我花了很多时间试图理解并实现一些看似简单的东西。
在我的WP7应用程序中,我有一个按钮,在长按后显示上下文菜单。由于此上下文菜单绑定到列表,因此项目数量可能很大。到目前为止,我还无法在数据模板周围添加滚动查看器。但我测试过,如果数据模板不存在,它应该可以正常工作。
这是我的XAML:
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu ItemsSource="{Binding}">
<toolkit:ContextMenu.ItemTemplate>
<DataTemplate >
<toolkit:MenuItem Header="{Binding Path=Name}" Click="MenuItem_Click"/>
</DataTemplate>
</toolkit:ContextMenu.ItemTemplate>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
我尝试在标记<toolkit:ContextMenuService.ContextMenu>
之前,标记<toolkit:ContextMenu ItemsSource="{Binding}">
之前添加ScrollViewer,但是没有任何效果
我还尝试在我的标签中使用附加属性:
<toolkit:ContextMenu ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Visible">
但它也不起作用。
但如果我不使用如下数据模板:
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<ScrollViewer>
<stackPanel>
<toolkit:MenuItem Header="Item1"/>
<toolkit:MenuItem Header="Item2"/>
<toolkit:MenuItem Header="Item3"/>
<toolkit:MenuItem Header="Item4"/>
</stackPanel>
</ScrollViewer>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
它工作正常。
我错过了什么吗?
答案 0 :(得分:4)
您需要将ScrollViewer放在ItemsPanelTemplate中的Template和StackPanel中,如下所示:
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu ItemsSource="{Binding}">
<toolkit:ContextMenu.Template>
<ControlTemplate TargetType="toolkit:ContextMenu">
<Border>
<ScrollViewer>
<ItemsPresenter/>
</ScrollViewer>
</Border>
</ControlTemplate>
</toolkit:ContextMenu.Template>
<toolkit:ContextMenu.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</toolkit:ContextMenu.ItemsPanel>
<toolkit:ContextMenu.ItemTemplate>
<DataTemplate >
<toolkit:MenuItem Header="{Binding Path=Name}" Click="MenuItem_Click"/>
</DataTemplate>
</toolkit:ContextMenu.ItemTemplate>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>