Dav*_*ave 9 c# wpf listview gridview mvvm
如果我说"哎呀!",我可以给我的ListView和SelectionMode ="Multiple"这个名字,并且能够很容易地获得所有选定的项目.但我试图尽可能地坚持MVVM,我想以某种方式数据绑定到一个ObservableCollection,它保存每个选定项的Name列的值.你是怎么做到这一点的?单选很简单,但对于我目前的WPF/MVVM知识,多选解决方案并不明显.
我在SO上阅读了这个问题,虽然它确实给了我一些很好的见解,但我不知道如何在行中添加必要的绑定,因为我使用的是带有GridView的ListView作为View,而不是ListBox.
这是我的XAML基本上看起来像:
<ListView DockPanel.Dock="Top" ItemsSource="{Binding ClientPreview}" SelectionMode="Multiple">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Address">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Address}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
听起来正确的做法是将每行的IsSelected属性数据绑定到存储在我正在数据绑定的ObservableCollection中的每个对象.我还没弄明白怎么做.
Job*_*Joy 11
在ListView上编写ItemContainerstyle并放置一个Setter来绑定到ViewModel的'IsSelected'属性
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected,Mode=OneWayToSource}"/>
Run Code Online (Sandbox Code Playgroud)