【发布时间】:2017-10-01 07:08:24
【问题描述】:
所以我正在使用 MVVM light 开发 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>
我之前在页面中将相同的事件触发器绑定到了不在 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”为空。
有人知道我做错了什么吗?
非常感谢!!
【问题讨论】:
-
BTW AppBarButton 派生自 Button 并且肯定有一个 Command 属性,您可以在其中直接绑定命令而无需交互
-
这确实有效!非常感谢。我不知道为什么我认为我需要它来获取命令参数...如果您将其发布为答案,我会将其标记为解决方案。