Silverlight Windows Phone 8-ListBox中ListBoxItem的上下文菜单
我有一个ListBox(绑定到一个可观察的集合),其ListBoxItems设计在ItemsPanel StaticResource中定义。 ItemsPanel在App.xml中定义(比如将我的东西放在中心位置,ListBoxItem的设计用于不同的页面) 现在,对于每个列表框,我需要有一个不同的ContextMenu,然后出现了一个问题,我无法工作 在my App.xaml(小演示-不想夸大主题,此处):Silverlight Windows Phone 8-ListBox中ListBoxItem的上下文菜单,silverlight,xaml,windows-phone-8,silverlight-toolkit,Silverlight,Xaml,Windows Phone 8,Silverlight Toolkit,我有一个ListBox(绑定到一个可观察的集合),其ListBoxItems设计在ItemsPanel StaticResource中定义。 ItemsPanel在App.xml中定义(比如将我的东西放在中心位置,ListBoxItem的设计用于不同的页面) 现在,对于每个列表框,我需要有一个不同的ContextMenu,然后出现了一个问题,我无法工作 在my App.xaml(小演示-不想夸大主题,此处): 在my MainPage.xaml中,我定义了列表框: <ListBox I
在my MainPage.xaml中,我定义了列表框:
<ListBox ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource ListItemTemplate}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="toolkit:ContextMenuService.ContextMenu">
<Setter.Value>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="Test" />
</toolkit:ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
但是,如果长按ListBoxItem,则什么也不会发生。我没有错误-没有-但是Contextmenu没有显示。。。(不在模拟器中,也不在设备上)
如果我将ContextMenu添加到LayoutRoot网格或其他内容中,它就像一个符咒。您应该尝试将ContextMenu放入ListItemTemplate中
<Application.Resources>
<DataTemplate x:Key="ListItemTemplate">
<StackPanel>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem x:Name="DoneMenuItem"
Header="Done"
Command="{Binding Main.DoneCommand, Source={StaticResource Locator}}"
CommandParameter="{Binding}"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
您还可以删除ListBox.ItemContainerStyle标记嗨,Fabrice,谢谢您的帖子。您能解释一下命令和CommandParameter的作用吗?绑定到哪里去了?事实上,如果不使用MVVM模式,可以在菜单项中使用Click事件。使用我的代码(和MVVM模式),我将从我的ViewModel执行一个命令,并将列表框中的selecteditem作为命令的参数传递。无论如何,您只需在菜单项中使用click事件即可。装订是一样的,上面写着:谢谢。那是丢失的东西。这是一个相当大的话题,需要更多的阅读。基本上,我现在添加了一个类,包含我的命令,并将其作为静态资源添加,以使代码分离,而不会弄乱我的ViewModel。让我有些头疼的是装订会结束,但一切都很顺利:)
<Application.Resources>
<DataTemplate x:Key="ListItemTemplate">
<StackPanel>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem x:Name="DoneMenuItem"
Header="Done"
Command="{Binding Main.DoneCommand, Source={StaticResource Locator}}"
CommandParameter="{Binding}"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>