Listview DataTemplate中的MVVM AppBarButton

时间:2017-10-01 07:08:24

标签: c# xaml mvvm uwp uwp-xaml

所以我使用MVVM光来开发UWP应用程序,我想在ListView中的每个项目中放置一个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>

我在页面前面的另一个AppBarButton做了同样的事件触发器绑定,它不在ListView中,并且它工作得非常好。我设置引用的命令与设置前一个命令的方式相同。页面的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>
  

Collection属性'__implicit_items'为空。

有没有人知道我做错了什么?

非常感谢!!

1 个答案:

答案 0 :(得分:0)

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

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