ListView DataTemplate中的MVVM AppBarButton

ListView DataTemplate中的MVVM AppBarButton

问题描述:

因此,我使用MVVM light开发UWP应用程序,并且希望在ListView中的每个项目中放置一个AppBarButton。我的项目模板代码如下:ListView DataTemplate中的MVVM AppBarButton

<ListView.ItemTemplate> 
<DataTemplate> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="25"/> 
      <RowDefinition Height="25"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="40"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="{Binding title}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
     <TextBlock Text="{Binding uniqueID}" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
     <StackPanel Grid.Column="1" Grid.RowSpan="2" Width="40" Padding="0,4"> 
      <AppBarButton Icon="Delete" IsCompact="True" Background="Red" Width="39" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <ie:Interaction.Behaviors> 
        <ic:EventTriggerBehavior EventName="Click"> 
         <ic:InvokeCommandAction Command="{Binding DataContext.DeleteItem, ElementName=page}" CommandParameter="{Binding}"/> 
        </ic:EventTriggerBehavior> 
       </ie:Interaction.Behaviors> 
      </AppBarButton> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

我这样做是相同的事件触发结合前面,这不是一个ListView内页的其他AppBarButton和它的工作完美的罚款。我已经设置了引用的命令,就像我设置较早的命令一样。该页面的DataContext设置正确,我已通过绑定到其他对象验证了其他位置。对于使用这种格式来做到这一点,我参考:Mvvm Light UWP Index Of Listitem When Button In ListItem Is Pressed

我的问题是,当我有下面的部分取消注释,我从Visual Studio中得到下面的错误。

<ie:Interaction.Behaviors> 
    <ic:EventTriggerBehavior EventName="Click"> 
     <ic:InvokeCommandAction Command="{Binding DataContext.DeleteItem, ElementName=page}" CommandParameter="{Binding}"/> 
    </ic:EventTriggerBehavior> 
</ie:Interaction.Behaviors> 

集合属性 '__implicit_items' 为空。

有没有人有任何想法我做错了什么?

非常感谢!

+1

BTW AppBarButton从按钮派生,肯定有地方可以绑定命令没有直接互动 –

+0

这实际工作命令的财产!非常感谢。我不知道为什么我认为我需要这个来获得一个命令参数......如果你将它作为答案发布,我会将其标记为解决方案。 –

我结束了使用AppBarButton的Command参数绑定到我的ViewModel中的命令。删除Interaction.Behaviors并在XAML参数中使用此版本。

<AppBarButton Icon="Delete" Command="{Binding DataContext.DeleteCourse, ElementName=page}" 
    CommandParameter="{Binding}" />