在Windows Phone中,有一項名爲ContextMenu的功能,該功能允許爲控件創建彈出菜單。滾動ContextMenu項目
但是,如果菜單項目列表很大,其中一些菜單項不適合屏幕。下面這個簡單的例子顯示了這一點:
在XAML:
我們將使用工具包,因此添加
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
,然後例如:
<Button Content="Button 1" Height="72" HorizontalAlignment="Left" Margin="160,400,0,0" Name="button1" VerticalAlignment="Top" Width="160">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="Action A" Name="miActionA1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action B" Name="miActionB1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action C" Name="miActionC1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action D" Name="miActionD1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action E" Name="miActionE1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action F" Name="miActionF1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Button>
在nullAction我們'無所事事
private void nullAction(object sender, RoutedEventArgs e)
{
}
DesignHeight值是默認WP7頁面的標準配置DesignHeight="768"
正如您所看到的,當您長按「按鈕1」控件時,會顯示菜單,但不會完全顯示。有些項目 不可見。就我而言,最好的決定是讓這個菜單可以滾動。這可以通過使用ScrollViewer來完成。
所以,我們用Scrollviewer和StackPanel來覆蓋菜單項。
<Button Content="Button 1" Height="72" HorizontalAlignment="Left" Margin="160,400,0,0" Name="button1" VerticalAlignment="Top" Width="160">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<ScrollViewer>
<StackPanel>
<toolkit:MenuItem Header="Action A" Name="miActionA1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action B" Name="miActionB1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action C" Name="miActionC1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action D" Name="miActionD1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action E" Name="miActionE1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
<toolkit:MenuItem Header="Action F" Name="miActionF1" BorderBrush="Black" BorderThickness="1" Click="nullAction" />
</StackPanel>
</ScrollViewer>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Button>
成功嗎?不,因爲你可以滾動這個列表,但 不能選擇項目。
我的問題是,如何解決它?
使用多點觸控? (我不太瞭解它)
也許,我需要添加一些屬性Scrolviewer?
還有其他想法嗎?
[已更新]另外,如果添加了scrollviewer,則發現點擊/點擊處理項目會改變行爲。通常,當您點擊該項目時,上下文菜單關閉並執行處理程序方法。使用滾動查看器時,上下文菜單不會關閉,需要再次點擊才能手動關閉它。爲什麼會這樣呢?