Windows phone 7 点击&;时无法在非文本区域激发事件;按住以显示WP7中的上下文菜单

Windows phone 7 点击&;时无法在非文本区域激发事件;按住以显示WP7中的上下文菜单,windows-phone-7,listbox,contextmenu,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>

我想将上下文菜单添加到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>


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

您的textbloc只会占用必要的空间。因此,stackpanel的宽度也仅为所需的宽度

可以将两者的“水平对齐”值设置为“拉伸”,使其占据整个宽度:

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

设置StackPanel背景属性。
当背景为透明时,无法工作,并且仅在stackpanel的非透明区域(如文本区域)触发hold事件。

对不起,文本块中不包含空格,我的意思是我只能在文字上触发事件,但是我不能在同一个列表框中的项目位置上启动事件,并且不能使用非单词区域。这正是我要说的。由于您的文本块和StackPanel在您点击并按住时不会占用所有空间,因此您实际上是在StackPanel之外点击,因此事件永远不会引发,您的contextmenu也不会显示出来这很好。最后,我将ListboxItem样式“HorizontalContentAlignment”和“HorizontalAlignment”更改为“Stretch”。而且它很好用。谢谢你帮助我,肯尼斯。