2013-02-07 125 views
1

我有一個WPF模型,其中包含一個viewsource,一個listview,和一個按鈕,這是爲了在列表視圖中選擇的項目的viewmodel執行ICommand。WPF綁定到CurrentItem

<Window.Resources> 
    <CollectionViewSource x:Key="teachingSessionsViewSource" d:DesignSource="{d:DesignInstance {x:Type local:TeachingSessionListItem}, CreateList=True}"/> 
</Window.Resources> 
... 
    <GroupBox Header="All Sessions" 
       DataContext="{Binding Source={StaticResource teachingSessionsViewSource}}"> 
     <StackPanel> 
      <ListView x:Name="TeachingSessionList" 
         ItemsSource="{Binding}" 
         SelectedItem="{Binding Path=/}"> 
       <ListView.View> 
        <GridView ColumnHeaderContainerStyle="{StaticResource noHeaderStyle}"> 
         <GridViewColumn DisplayMemberBinding="{Binding SessionDate}"/> 
         <GridViewColumn DisplayMemberBinding="{Binding PresenterInitials}" Width="30" /> 
        </GridView> 
       </ListView.View> 
      </ListView> 
      <Button Content="Un-Assign" Margin="5,5" Command="{Binding Path=/UnAssignPresentation}" 
     </StackPanel> 
    </GroupBox> 

的問題是,所述的ICommand UnAssignPresentation總是在所述列表中的第一項被執行,而不管在列表視圖中選擇哪個項目。也就是說,CollectionViewSource的currentItem屬性似乎沒有綁定到ListView。

我在做什麼錯?非常感謝你。

回答

2

嘗試將IsSynchronizedWithCurrentItem="True"添加到您的ListView中。

另外,喜歡綁定列表視圖到視圖模型中的集合,而不是資源。
然後,您可以爲所選項目的視圖模型添加一個屬性
並將列表視圖的選定項目綁定到視圖模型中的該屬性
並將按鈕的命令綁定到視圖模型中作用於當前項目,
或通過綁定到選定項目的命令參數傳遞要執行的項目。