Nicht wählen Sie mehrere Zeilen in einer WPF-DataGrid
Obwohl ich habe SelectionMode="Extended"
und SelectionUnit="FullRow"
gesetzt, wenn ich die debug - SelectionChanged
Veranstaltung, es gibt immer nur ein ausgewähltes Element in SelectedItems
.
Dies ist mein DataGrid
:
<DataGrid Grid.Row="0" AutoGenerateColumns="False" Margin="5,5,5,0"
Name="dgrMembersClub1" ItemsSource="{Binding .}" CanUserAddRows="False"
SelectionMode="Extended" SelectionUnit="FullRow" SelectionChanged="Grid_SelectionChanged">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Joining" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True" Header="Surname" Binding="{Binding Surname}" />
<DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding Name}" />
<DataGridTextColumn IsReadOnly="True" Header="Club" Binding="{Binding Club_Id, Converter={StaticResource ClubName}}" />
<DataGridTextColumn IsReadOnly="True" Header="City" Binding="{Binding City}" />
</DataGrid.Columns>
</DataGrid>
Und meine Grid_SelectionChanged
Veranstaltung:
private void Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid grid = (DataGrid)sender;
var test = grid.SelectedItems; //Count == 1 (always)
}
Ich habe Trigger set (in-App.xaml), das ändern der hintergrund-und Vordergrund-Pinsel für ausgewählte und wechselnde Reihen. Falls das relevant ist, bitte lassen Sie mich wissen, und ich werde den code hinzufügen.
* EDIT *
Während Sie gerade dabei sind, ich könnte etwas Hilfe verwenden, bekommen Sie das Kontrollkästchen in der Zelle-Vorlage zu arbeiten. Ziemlich bitte 🙂
- Sie können für die Bindung SelectedItems.
- Das würde entfernen Sie alle Elemente, die nicht ausgewählt sind, in das datagrid, richtig? Das ist nicht wirklich das was ich will. Das problem ist, ich kann nicht wählen Sie mehr als 1 Zeile.
- Nein, nichts wird entfernt aus dem Netz. Es ist ein array der ausgewählten Elemente. Ich Binde es die ganze Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem SelectedItems-Eigenschaft des DataGrid enthält eine Liste von, auch, ausgewählte Artikel...
Diesen vorläufigen event-handler ruft die SelectedItems und durchläuft es.
Allerdings gibt es eine Einschränkung:
Quelle: http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.selecteditems(v=vs. 95).aspx
Dem SelectedItems-Eigenschaft erbt von IList so ist es möglich zu wirken und ausführen von LINQ-Operationen auf Sie als gut. Es funktioniert auch mit nicht zusammenhängenden Auswahl.
Mehr Tipps zu http://www.dotnetperls.com/datagrid