2010-03-24 14 views
9

Eğer "heck with it!" Diyeceksem, ListView'ımı SelectionMode = "Multiple" ile bir isim verebilir ve seçilen tüm öğeleri çok kolay bir şekilde alabilirim. Ama MVVM'ye mümkün olduğunca yapışmaya çalışıyorum ve bir şekilde seçilen her bir öğe için İsim sütunundaki değeri tutan bir ObservableCollection'a bağlamak istiyorum. Dünyada bunu nasıl yapıyorsunuz? Tek seçim basittir, ancak mevcut olan WPF/MVVM bilgimle çoklu seçim çözümü bana açık değildir.ListView + MultipleSelect + MVVM =?

I read this question on SO ve bana biraz iyi bir fikir verirken, bir satır için gerekli bağlamayı nasıl ekleyeceğimi bilmiyorum, çünkü bir ListBox'ı değil, bir GridView ile ViewView'ı kullanıyorum. Yapılacak doğru şey gibi geliyor

<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> 

Ben Veri bağlamada ediyorum ObservableCollection saklanan her nesneye her satırın IsSelected mülkiyet databind şudur:

İşte böyle benim XAML temelde görünüyor budur. Sadece bunu nasıl yapacağımı anlayamadım.

cevap

11

Yaz ListView üzerinde ItemContainerStyle ve Setter koymak için ViewModel 'IsSelected' mülkiyet

<Style TargetType="{x:Type ListViewItem}"> 
    <Setter Property="IsSelected" Value="{Binding IsSelected,Mode=OneWayToSource}"/> 
+0

ah bağlanma yapmak! Gümüş tepside sana teslim edildiğinde mantıklı geliyor. Bir sürü teşekkürler, Jobi. Bu gece bir girdap vereceğim ve bunu onayladıktan sonra cevap olarak işaretleyeceğim. – Dave

+0

Jobi, bu tamamen hile yaptı, teşekkürler !!! – Dave