Так что в настоящее время я пытаюсь изучить WPF с MVVM, и я следовал некоторым учебникам в Интернете.Теперь, когда у меня есть простой проект, я попытался сделать это самостоятельно, но каким-то образом ListBox остался пустым.Я думаю, это не связано с моделью представления.Что мне здесь не хватает?Любая помощь приветствуется.
Модель:
public class Person : INotifyPropertyChanged
{
private string _vorname;
private string _nachname;
private string _email;
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string property) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
public string Vorname
{
get { return _vorname; }
set
{
_vorname = value;
RaisePropertyChanged(nameof(Vorname));
}
}
public string Nachname
{
get { return _nachname; }
set
{
_nachname = value;
RaisePropertyChanged(nameof(Nachname));
}
}
public string Email
{
get { return _email; }
set
{
_email = value;
RaisePropertyChanged(nameof(Email));
}
}
}
Вид:
<UserControl.Resources>
<DataTemplate x:Key="personenTemplate">
<StackPanel Orientation="Horizontal">
<TextBox Width="200" Margin="3,5,3,5"
Text="{Binding Path=Vorname, Mode=TwoWay}" />
<TextBox Width="200" Margin="0,5,3,5"
Text="{Binding Path=Nachname, Mode=TwoWay}" />
<TextBox Width="200" Margin="0,5,3,5"
Text="{Binding Path=Email, Mode=TwoWay}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<StackPanel Orientation="Horizontal">
<ListBox Width="500"
ItemTemplate="{StaticResource personenTemplate}"
ItemsSource="{Binding Personen}" />
</StackPanel>
</Grid>
ViewModel:
public class PersonViewModel
{
ObservableCollection<Person> Personen { get; set; } = new ObservableCollection<Person>();
public PersonViewModel()
{
Personen.Add(new Person { Vorname = "My", Nachname = "Name", Email = "my@name.com" });
Personen.Add(new Person { Vorname = "Max", Nachname = "Mustermann", Email = "max@mustermann.de" });
Personen.Add(new Person { Vorname = "John", Nachname = "Doe", Email = "john@doe.com" });
Personen.Add(new Person { Vorname = "Jane", Nachname = "Doe", Email = "jane@doe.com" });
}
}
}
Кроме того, я устанавливаю свой DataContext следующим образом на моем [..] View.xaml.cs
public PersonenView()
{
InitializeComponent();
this.DataContext = new ViewModel.PersonViewModel();
}