Как я могу получить значения списка, привязанного к сетке данных - PullRequest
0 голосов
/ 13 июня 2019

Я связал список с DataGrid.После изменения списка в DataGrid я хотел бы сохранить список в файле XML.Как я могу получить доступ к списку в коде C #?Другими словами, я хочу получить содержимое Welle1 после нажатия на Button.


InitializeComponent();

List<Wellenelement> we1 = new List<Wellenelement>();
Welle Welle1 = new Welle
            {
                Elemente = we1
            };

dataGrid.DataContext = Welle1;

```c#

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Итак, прежде всего, используя WPF, вам придется использовать Properties и PropertyChangedEvent.

Перейдите в свой MainWindow.xaml.cs (или в свою ViewModel, если вы уже используете MVVM) и добавьте под своим Конструктором (обычно public MainWindow(){ //[...])

public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
  if (PropertyChanged != null)
  {
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  }
}

вам также нужно будет добавить using System.ComponentModel; к вашим обычаям, чтобы найти необходимые классы.

Затем вы добавляете новый Property прямо над вашим Конструктором, например:

  private ObservableCollection<WellenElement> m_WellenListe;
  public ObservableCollection<WellenElement> WellenListe
    {
      get { return m_WellenListe; }
      set
      {
        m_WellenListe = value;
        OnPropertyChanged("WellenListe");
      }
    }

Примечание. Я предлагаю использовать ObservableCollection вместо List, если вы хотите изменить ваш ItemsSource во время выполнения. (Вы должны добавить using System.Collections.ObjectModel;, чтобы получить класс)

Теперь вы можете привязать свой DataGrid к вашему ObservableCollection:

<DataGrid ItemsSource="{Binding WellenListe}"/>

Теперь вы можете делать все что угодно с вашим списком в коде, например:

button1_click(object sender, RoutedEventArgs e)
{
    foreach(WellenElement welle in WellenListe)
    {
      //Save to xml
    }

}
0 голосов
/ 13 июня 2019

вам нужно привязать DataContext к BindableCollection, но не напрямую к List;

...