2017-10-01 1 views
0

그래서 MVVM 라이트를 사용하여 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는'null입니다.

아무도 내가 뭘 잘못하고 있는지 아이디어가 있습니까?

감사합니다.

+1

은 BTW AppBarButton는 버튼에서 유래와 당신이 실제로 일한 상호 작용 –

+0

없이 직접 명령을 결합 할 수 명령 속성이를 위해! 정말 고맙습니다. 내가 명령 매개 변수를 알아 내는데 필요한 것이라고 생각한 이유가 무엇인지 모르겠다 ... 답변으로 게시하면 해결책으로 표시 할 것입니다. –

답변

0

필자는 ViewBarButton의 Command 매개 변수를 사용하여 ViewModel에 있던 명령에 바인딩했습니다. Interaction.Behaviors을 제거하고 XAML에서이 빌드를 사용하여 매개 변수가 작동했습니다.

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