我有一个WPF模型,其中包含一个viewsource、一个listview和一个按钮,该按钮用于在viewmodel中为在listview中选择的项执行ICommand。
<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。
我做错了什么?非常感谢。
发布于 2013-02-08 04:09:11
尝试将IsSynchronizedWithCurrentItem="True"添加到您的ListView。
此外,最好将listview绑定到视图模型中的集合,而不是绑定到资源。
然后,可以将属性添加到选定项的视图模型中
并将列表视图的选定项绑定到视图模型中的该属性
并将按钮的命令绑定到视图模型中作用于当前项的命令,
或者通过绑定到选定项的命令参数传递要操作的项。
https://stackoverflow.com/questions/14759915
复制相似问题