2017-10-01 172 views
0

因此,我使用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

這實際工作命令的財產!非常感謝。我不知道爲什麼我認爲我需要這個來獲得一個命令參數......如果你將它作爲答案發布,我會將其標記爲解決方案。 –

回答

0

我結束了使用AppBarButton的Command參數綁定到我的ViewModel中的命令。刪除Interaction.Behaviors並在XAML參數中使用此版本。

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