Xaml 上下文菜单命令不工作
我正在使用Windows Phone 8应用程序,我在使用Xaml 上下文菜单命令不工作,xaml,windows-phone-8,mvvm,command,contextmenu,Xaml,Windows Phone 8,Mvvm,Command,Contextmenu,我正在使用Windows Phone 8应用程序,我在使用列表框的上下文菜单时遇到一些问题。我使用ListBoxItemTemplate中的工具箱ContextMenu,如下所示: <DataTemplate x:Key="ListBoxItemTemplate"> <Grid Height="50" Background="#11414141" Margin="0,1,0,1"> <toolkit:C
列表框的上下文菜单时遇到一些问题。我使用ListBoxItemTemplate
中的工具箱ContextMenu
,如下所示:
<DataTemplate x:Key="ListBoxItemTemplate">
<Grid Height="50" Background="#11414141"
Margin="0,1,0,1">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="Remove Transaction" Command="{Binding DataContext.RemoveTappedElementCommand}" CommandParameter="{Binding}"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="180"/>
</Grid.ColumnDefinitions>
<!--<StackPanel Grid.Column="0" Background="{Binding IsIncome, Converter={StaticResource TypeToColorConverter}}"/>-->
<StackPanel Grid.Column="0" Background="#FFFB7C26"/>
<TextBlock Grid.Column="1"
Text="{Binding Date, StringFormat=dd/MM}"
VerticalAlignment="Center"
Margin="6,0,6,0"/>
<TextBlock Grid.Column="2"
Text="{Binding Capitolo}"
TextTrimming="WordEllipsis"
VerticalAlignment="Center"/>
<Grid Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Amount, StringFormat=C}"
Grid.Column="0"
Foreground="{Binding IsIncome, Converter={StaticResource TypeToColorConverter}}"
VerticalAlignment="Center"
HorizontalAlignment="Right"
FontSize="25"
FontWeight="SemiBold"
Margin="4,0,4,0"/>
<TextBlock Text="{Binding IsIncome, Converter={StaticResource TypeToSignStringConverter}}"
Grid.Column="1"
Foreground="{Binding IsIncome, Converter={StaticResource TypeToColorConverter}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontSize="25"
FontWeight="SemiBold"/>
</Grid>
</Grid>
</DataTemplate>
我使用的是MVVM模式,所以我尝试将MenuItem
的命令属性绑定到ViewModel的ICommand
。但是当我点击上下文菜单的菜单项时,什么都没有发生,命令没有被触发,我也不知道原因。非常感谢您的帮助。您的绑定有一个问题:
Command="{Binding DataContext.RemoveTappedElementCommand}"
Command="{Binding ElementName=Root, Path=DataContext.RemoveTappedElementCommand}"
这将不会在顶级DataContext上查找RemoveTappedElementCommand
,而是在项目视图模型上查找属性DataContext
。
要真正绑定到包含ListBox的页面/控件的DataContext,请为该项指定一个名称
x:Name="Root"
并扩展您的绑定:
Command="{Binding DataContext.RemoveTappedElementCommand}"
Command="{Binding ElementName=Root, Path=DataContext.RemoveTappedElementCommand}"
是的,你说得对!谢谢我以为DataContext是从父控件继承的!因此,在项目模板中,DataContext会自动设置为集合的当前项目。实际上,当您考虑它时,您使用的绑定形式是{binding itemPropertyName}
,因此DataContext就是项。。。谢谢!