2014-10-11 57 views
0

我正在研究Windows Phone 8应用程序,并且我在List BoxContextMenu中遇到了一些问题。我使用该工具包ContextMenuListBoxItemTemplate如下:上下文菜单命令不起作用

<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的命令属性格式绑定到视图模型的ICommand。但是当我点击上下文菜单的MenuItem时,什么也没有发生,命令没有被解雇,我找不出原因。任何帮助将非常感激。

回答

1

有一个在你的绑定一个问题:

Command="{Binding DataContext.RemoveTappedElementCommand}" 

这将认准RemoveTappedElementCommand上顶级的DataContext,而是将查找在您的项目视图模型的财产DataContext。 要真的绑定到页/控制在DataContext指含有列表框,给该项目的名称

x:Name="Root" 

,扩大你的绑定:

Command="{Binding ElementName=Root, Path=DataContext.RemoveTappedElementCommand}" 
+0

是啊,你说得对!谢谢!我认为DataContext是从父母控制继承的!因此在项目模板中,DataContext自动设置为集合的当前项目。实际上,当你考虑它时,你使用'{Binding itemPropertyName}'形式的绑定,所以DataContext是项目... 非常感谢! – Dan 2014-10-13 06:27:06