Holen Sie das Kontrollkästchen Wert in wpf datagrid
habe ich ein datagrid in wpf habe ich mehrere Zeilen(items) in das datagrid-und eine checkbox-Spalte in jeder Zeile. ich möchte, um zu überprüfen, in alle Zeilen, wenn der checkbox überprüft wird in einer Zeile, und dann die Aktion ausführen, die unten ist mein code. Danke!
WPF-Code
<DataGrid CanUserAddRows="False" AutoGenerateColumns="False"
CellEditEnding="SaveDeliveryValue" LoadingRow="DataGrid_LoadingRow"
Name="ViewOrdersGrid" HorizontalAlignment="Center" Margin="0,10,0,0"
VerticalAlignment="Top" Height="278" Width="520" BorderBrush="#FFA0A0A0">
<DataGrid.Columns>
<DataGridTextColumn Header="Order No" Width="115" Binding="{Binding Path=BONo, Mode=OneWay}" />
<DataGridTextColumn Header="Order Date" Width="100" Binding="{Binding Path=BODate, Mode=OneWay, StringFormat=d}" />
<DataGridTextColumn Header="Total Amount" Width="100" Binding="{Binding Path=BOTotal, Mode=OneWay}" />
<DataGridTextColumn Header="Total Bikes" Width="100" Binding="{Binding Path=BOTatalBikes, Mode=OneWay}" />
<DataGridCheckBoxColumn Header="Delivered" x:Name="DeliveryValueCheck" Width="70" Binding="{Binding Path=BODelivered, Mode=TwoWay}" />
</DataGrid.Columns>
</DataGrid>
C# - code
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < ViewOrdersGrid.Items.Count; i++)
{
CheckBox mycheckbox = ViewOrdersGrid.Columns[4].GetCellContent(ViewOrdersGrid.Items[i]) as CheckBox;
if (mycheckbox.IsChecked == true)
{
MessageBox.Show("Checked");
}
}
}
- Verwenden Sie nicht den prozeduralen code zu "Lesen" - UI-Elemente-Eigenschaften in WPF. UI ist nicht Daten. Erstellen Sie eine korrekte ViewModel und Datenbindung statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du schon mit MVVM, die ich sehen kann, durch die Bindungen, Sie sind also auf einem guten Weg. Nun, da MVVM ermöglicht eine sehr enge Beziehung zwischen der Benutzeroberfläche und der Daten können wir die Folgerung, dass, wenn wir durchqueren die visuelle Struktur für die checked-Eigenschaft auf ein bestimmtes Objekt, sollten wir auch in der Lage sein, Durchlaufen die Daten für eine solche Eigenschaft. So Ihr C# - code sollte wie folgt Aussehen (angenommen in Ihrem code, dass die DataGrid-ItemsSource gebunden ist, um eine Sammlung (nennen wir es MyItems):
Diesem Beispiel wird davon ausgegangen, dass (weil der rest von deinem Beispiel ist das verwenden von Bindungen entsprechend), die in Ihrem raster gebunden ist, etwas (wir nannten es MyItems). Wenn Sie brauchen, um zu sehen, wie das funktioniert (heißt, Sie haben nicht umgesetzt, wie MVVM und MICH GETÄUSCHT), dann sollten Sie Folgendes beachten:
Dies ist der XAML -
Dies ist Ihre Datenstruktur
Dies ist dein *.xaml.cs-Datei
Dies ist Ihrer Ansicht Modell (MyViewModel.cs)