当点击并按住以显示WP7中的上下文菜单时,无法在非文本区域上触发事件

时间:2013-04-29 15:02:16

标签: windows-phone-7 listbox contextmenu

我想在WP7中将上下文菜单添加到ListBox,我修改数据模板如下:

<ListBox Name="lbx1" Margin="10,0,10,0" Height="435"  ItemContainerStyle="{StaticResource ListBoxItemStyle1}" FontSize="40" Tap="lbx1_Tap" >
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <toolkit:ContextMenuService.ContextMenu>
                                        <toolkit:ContextMenu>
                                            <toolkit:MenuItem Header="Copy" Click="ListBoxGeneralCopy_Click"/>
                                        </toolkit:ContextMenu>
                                    </toolkit:ContextMenuService.ContextMenu>
                                    <TextBlock Text="{Binding .}" />
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

我只能导致点击并按住事件以显示文本上方的上下文菜单,非文本区域无法引发事件,我真的很困惑。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

你的textbloc只会占用很多空间。因此,您的堆叠面板也将只有必要的宽度。

您可以将两者的Horizo​​ntalAlignment值设置为拉伸,使其占据整个宽度:

<ListBox Name="lbx1" Margin="10,0,10,0" Height="435"  ItemContainerStyle="{StaticResource ListBoxItemStyle1}" FontSize="40" Tap="lbx1_Tap" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel HorizontalAlignment="Stretch">
                <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu>
                        <toolkit:MenuItem Header="Copy" Click="ListBoxGeneralCopy_Click"/>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>
                <TextBlock Text="{Binding .}"  HorizontalAlignment="Stretch"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

答案 1 :(得分:0)

设置StackPanel背景属性。 当背景透明无法工作时,hold事件仅在stackpanel的非透明区域(如text-regions)中触发。