Kiedy używać bindowania w WPF?

0

Uczę się pisać w WPF. Nie bardzo rozumiem kiedy zmienne bindować w xml a kiedy mogę przypisać je w code behind tak jak w win formsach. Poniżej zawieram fragment kodu , jest on poprawny czy powinienem jakiś fragment zastąpić bindowaniem?

class User
{
public string login { get; set; }
public string password { get; set; }
public string name { get; set; }
public string surname { get; set; }
public DateTime dateOfBirth { get; set; }
}

List<user> UserList=new list<user>();


private void LogOn_Click(object sender, RoutedEventArgs e)
{
MainMenu asd = new MainMenu(); //nowa forma

         int index = UserList.FindIndex(a => a.login ==tbox_Login.Text);

        if (index<UserList.Count && index>=0)
        {
            if (tbox_Password.Text == UserList[index].password)
                asd.Show();
        }
    }

Proszę o pomoc co z tego kodu powinienem przenieść jako bindowanie do xml i wyjasnienie idei bindowania.

1

Najprościej:

  • jeżeli zmienne dotyczą widoku: code-behind;
  • jeżeli zmienne dotyczą danych: viewmodel.
0

Ok czy mogłbys mi na podstawie kodu z tytułowego posta powiedzieć co i jak zmienić?

void AddUsers()
        {
            
            UserList.Add(new User() {login=tbox_Login.Text,password=tbox_Password.Text });
        }

Ta metoda rozumiem ,że nie moze znalezc sie w code behind bo ustawia zawartosc textboxa z code behind a nie xml tak?Proszę o wskazowke jak to przenieść .

0

To naprawdę długa historia i najlepiej będzie jeżeli zwyczajnie o tym poczytasz. Zainteresuj się czymś co nazywa się MVVM dla WPF'a.

Podejścia są dwa:

  • Albo olewa się MVVM i robi wszystko w code-behind: wtedy cały data binding również odbywa się wewnątrz code-behind, niemniej ten musi implementować interfejs INotifyPropertyChanded, bowiem prawie zawsze dane będą się zmieniały.

  • Albo tworzy się osobne klasy zwane modelami widoku czyli ViewModelami, również implementujące ww. interfejs, w których dokonuje się całego bindowania danych oraz implementacji komend.

Poczytaj o czymś co nazywa się Prism albo MVVMLight to będzie Ci łatwiej, bo takie frameworki rozwiązują tak z 80% problemów związanych z MVVM. No, w końcu od tego są.
Tak, żeby wytłumaczyć od początku do końca o co chodzi to trzeba by książkę napisać.

Tutaj masz przykładową apkę w WPF'ie z wykorzystaniem Prisma oraz MVVM:

https://4programmers.net/Forum/C_i_.NET/292535-sposob_na_tworzenie_obiektu_ze_zmieniajacymi_sie_dynamicznie_parametrami?p=1378486#id1378486

1 użytkowników online, w tym zalogowanych: 0, gości: 1