• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

DataGrid - bindowanie wierszy do listy WPF / MVVM

Object Storage Arubacloud
0 głosów
957 wizyt
pytanie zadane 11 marca 2017 w C# przez PejtaM Użytkownik (550 p.)
edycja 12 marca 2017 przez PejtaM

Witam, nie potrafię zbindować całego wiersza z DataGrid do Listy.

Przykładowo mam klasę Person:

public class Person 
{
     private string name;
     private string surename;
     private bool isChecked;

     public Person(string name, string surename) 
     { 
         this.name = name; 
         this.surename = surename; 
         this.isChecked = false; 
     }

     public Person(string name, string surename, bool isChecked)
     {
         this.name = name;
         this.surename = surename;
         this.isChecked = isChecked;
     }
}

I powiedzmy, że zrobiłem listę z obiektów klasy person - przykładowo 10 obiektów

List<Person> personsList = new List<Person>();
personsList.Add(new Person(jan, kowalski)); 
... x10

I w xaml mam stworzony DataGrid z kolumnami:

<DataGrid ItemsSource="{Binding Path=personsList}">
      <DataGrid.Columns>
           <DataGridTextColumn Header="Name" Binding="{Binding name}"/>
            <DataGridTextColumn Header="Surename" Binding="{Binding surename}" />
            <DataGridCheckBoxColumn Header="IsChecked" Binding="{Binding isChecked}"  />
       </DataGrid.Columns>
</DataGrid>

=> w UI wybieram kilka CheckBoxów i chcę aby po naciśnięciu Buttona zbindowało mi to do listy w postaci

new Person(name,surename,isChecked(pobrane z UI));
... x10

Czyli jak otrzymać listę z złożoną z każdego wiersza DataGrid ?

 

1 odpowiedź

+1 głos
odpowiedź 12 marca 2017 przez Bartłomiej Łaski Mądrala (5,100 p.)
wybrane 12 marca 2017 przez PejtaM
 
Najlepsza

Witaj

Wedlug internetu i stack overflow, twoj problem polega na nie ustawieniu {get; set;} przy name, surname, isChecked :).
http://stackoverflow.com/questions/18068413/bind-list-to-datagrid


Konstruktor moglby byc jeden, i wygladalbym on tak.

public Person(string name, string surename, isChecked = false) 
{ 
    this.name = name; 
    this.surename = surename; 
    this.isChecked = isChecked; // domyslna wartosc zawsze bedzie na false, chyba ze ktos poda inna wartosc jako trzeci parametr :)
}

 

PS. Prosze Cię rób sobie wciecia w kodzie bo twoj kod wyglada jak kupa... Estetyka kodu = lepszy debugging kodu...

1
komentarz 12 marca 2017 przez PejtaM Użytkownik (550 p.)

Dzięki za pomoc i podesłanie linka :) W kodzie miałem ustawione Właściwości a i tak nie działało. Spędziłem nad tym sporo czasu.

Przyczyna leżała w tym, że próbowałem zbindować do struktury a nie do klasy:

And a struct is not an appropiate type for the data you're trying to represent.

Wystarczyła zmiana słówka 'struct' na 'class'.

btw. fajna sprawa z tym opcjonalnym parametrem w konstruktorze - nie znałem tego ;)

Podobne pytania

0 głosów
1 odpowiedź 481 wizyt
0 głosów
0 odpowiedzi 195 wizyt
0 głosów
1 odpowiedź 367 wizyt
pytanie zadane 15 maja 2019 w C# przez DrajzleR Obywatel (1,380 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...