1

我想解决一个看似简单的任务。我想创建一个文本条目列表,其中每个条目都是可选的(并导致导航到另一个页面),并且当用户将手指放在一个项目上时,我想要一个带有单个选项的上下文菜单来删除该项目。这是 WP 应用程序中非常常见的模式。例如,浏览器使用收藏夹执行此操作。

现在我在项目模板中有一个带有文本块的列表框,我在 SelectionChanged 事件中开始导航:

<ListBox Name="lbSnippets" SelectionChanged="lbSnippets_SelectionChanged">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"></TextBlock>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ListBox>

我可以想出几种方法来解决保持问题,但没有一种方法适合我。例如,我可以处理 TextBlock 上的 Hold 事件,但随后我将不得不挖掘与此 TextBlock 相关的项目。有些东西告诉我应该有更好的方法来做到这一点,因为它很常见。解决此任务的正确方法是什么?

4

1 回答 1

2

WP7的Silverlight 工具包包括一个ContextMenu控件。

您可以通过 nuget 安装工具包:PM> Install-Package SilverlightToolkitWP

然后,您将 ContextMenus 添加到基本上任何控件:

<DataTemplate>
    <TextBlock Text="{Binding}">
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu>
                <toolkit:MenuItem Header="Delete" 
                                  Command="{Binding YourDeleteCommand}"/>
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
    </TextBlock>
</DataTemplate>

toolkitxml命名空间在哪里:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

您可以从本文开始了解 ContextMenu 控件:

深入了解 WP7 ContextMenu | 第 1 部分:关键概念和 API

于 2012-08-17T13:46:50.653 回答