0

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

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

4

2 回答 2

0

设置 StackPanel 背景属性。当背景透明时无法工作,并且仅在堆栈面板的非透明区域(例如文本区域)中触发保持事件。

于 2013-11-26T14:34:51.233 回答
0

您的文本块只会占用必要的空间。因此,您的堆栈面板也将仅根据需要宽。

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

<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>
于 2013-04-29T20:55:26.093 回答