2

我花了很多時間試圖理解和實現一些看起來很簡單的事情。在ContextMenu.MenuItem DataTemplate中使用ScrollViewer

在我的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> 

我嘗試添加一個ScrollViewer中幾乎無處不在(標籤之前:<toolkit:ContextMenuService.ContextMenu>,標籤<toolkit:ContextMenu ItemsSource="{Binding}">之前,...),但沒有任何工程

我也嘗試過在我的標記中使用附加屬性:

<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> 

它工作正常。

我錯過了什麼嗎?

回答

4

你會想要把你的ScrollViewer的模板,並在您ItemsPanelTemplate一個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> 
+0

感謝,它工作正常.. – Refre 2011-05-06 10:02:05

+0

@Refre很高興我能幫助!如果這解決了您的問題,請將其標記爲答案,謝謝。 – theChrisKent 2011-05-06 12:48:12