2010-03-24 6 views
9

Если бы я сказал «черт возьми!», Я мог бы просто дать моему ListView с SelectionMode = «Multiple» имя и иметь возможность получить все выбранные элементы очень легко. Но я стараюсь как можно больше придерживаться MVVM, и я хочу каким-то образом привязать данные к ObservableCollection, который содержит значение из столбца Name для каждого выбранного элемента. Как в мире вы это делаете? Единый выбор прост, но решение для множественного выбора не очевидно для меня с моими текущими знаниями WPF/MVVM.ListView + MultipleSelect + MVVM =?

I read this question on SO, и хотя это дает мне хорошее представление, я не знаю, как добавить необходимую привязку к строке, потому что я использую ListView с GridView в качестве представления, а не 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> 

Это звучит, как правильно нужно сделать, это свойство IsSelected привязки каждой строки для каждого объекта, хранящегося в ObservableCollection я Databinding к. Я просто не понял, как это сделать.

ответ

11

Написать ItemContainerStyle на ListView и поставить сеттер сделать привязку к свойству вашего ViewModel «» IsSelected

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

ах! Это имеет смысл, когда он вручается вам на серебряном блюде. Спасибо, кучка, Джоби. Я дам этот вихрь сегодня вечером и отметю это как ответ, как только подтвержу это. – Dave

+0

Джоби, который полностью сделал трюк, спасибо !!! – Dave

Смежные вопросы