2016-11-29 4 views
0

Ich sehe, wo diese Frage gestellt wurde, aber die meisten Antworten scheinen sich um Code herum zu konzentrieren, während ich ein MVVM-Muster verwende. Für die Antworten, die zu meiner Situation gehören, habe ich verschiedene Vorschläge ausprobiert, aber ich vermisse das große Bild.Wie bekomme ich die Werte aus den Zellen einer ausgewählten Zeile in einem Datagrid?

Im Grunde genommen möchte ich eine Löschschaltfläche hinzufügen, die alle ausgewählten Zeilen im Datagrid aus einer SQL-Datenbank löscht oder jeder Zeile eine Löschschaltfläche hinzufügt. Ich würde lieber eine einzelne Schaltfläche löschen, aber offen für eine Schaltfläche zum Löschen in jeder Zeile, die ich tatsächlich bereits getan habe, aber immer noch das gleiche Problem, dass ich eine bestimmte Datensatz-ID aus der Datenbank löschen sowie entfernen muss aus der Sammlung.

XAML

  <DataGrid x:Name="licenseGrid" 
        ItemsSource="{Binding LoggedUsers}" 
        SelectedItem="{Binding SelectedLicense, Mode=TwoWay}" 
        Style="{DynamicResource DataGridStyle}" 
        Grid.Row="2" 
        Grid.Column="1" 
        Grid.ColumnSpan="6" 
        Height="535" 
        VerticalAlignment="Top" 
        IsReadOnly="True" 
        AutoGenerateColumns="False" 
        HeadersVisibility="Column" 
        SelectionMode="Extended" 
        CanUserDeleteRows="True"> 

Ansichtsmodell

 public ObservableCollection<MD_LoggedUsersModel> LoggedUsers 
    { 
     get { return _loggedUsers; } 
     set { _loggedUsers = value; NotifyPropertyChanged(nameof(LoggedUsers)); } 

     public string SelectedLicense 
    { 
     get 
     { 
      return _selectedLicense; 
     } 
     set 
     { 
      if (_selectedLicense != value) 
      { 
       _selectedLicense = value; 
       OnPropertyChanged(nameof(SelectedLicense)); 
       RevokeSelected(_selectedLicense); 
      } 
      if (_selectedLicense == null) 
      { 
       LoadData(); 
      } 
     } 
    } 

Der Wert, der zurückgegeben wird, wird der Name des LoggedUsers Modell ist.

Wie bekomme ich den Wert jeder Zelle?

Antwort

0

Sie müssen Ihre SelectedItem auf den gleichen Typ wie die Elemente in Ihrem ObservableColleciton aktualisieren.

public MD_LoggedUsersModel SelectedLicense 
{ 
    get 
    { 
     return _selectedLicense; 
    } 
    set 
    { 
     if (_selectedLicense != value) 
     { 
      _selectedLicense = value; 
     } 
    } 
} 
+0

Das hat den Trick gemacht. Sehr geschätzt !! –

Verwandte Themen