Как заставить VS заполнить мой ListView
образцами данных на панели «Дизайн»?
Я в тупике. Я много читал и гуглял и не могу найти надежного ответа. Отображение поддельных данных на панели VS Design значительно ускорило бы их тематику, поскольку мне не пришлось бы отлаживать их каждые несколько изменений.
Вот мой код:
XAML:
<ListView DataContext="{Binding}"
Name="PeopleListView">
<ListView.ItemTemplate>
<DataTemplate DataType="Person">
<WrapPanel>
<TextBlock Text="{Binding Path=FirstNameView}"/>
<TextBlock Text="{Binding Path=LastNameView}" />
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
КОЛЛЕКЦИЯ:
public class People : ObservableCollection<Person>
{
public People()
{
this.Add(new Person() { FirstName = "John", LastName = "Doe" });
this.Add(new Person() { FirstName = "John", LastName = "Doe" });
this.Add(new Person() { FirstName = "John", LastName = "Doe" });
}
}
ГЛАВНАЯ:
private People PList;
public MainWindow()
{
this.PList = new People();
PeopleListView.ItemsSource = this.PList;
}
РЕДАКТИРОВАТЬ И ПРОГРЕСС:
Я прочитал учебники, которые можно найти по ссылке, предоставленной Matt West . Они были очень полезны. Я почти понял это.
Я столкнулся с проблемой, когда конструктор пытается отобразить пример данных. Я получаю эту ошибку в моих свойствах образца: Writable property or collection expected
. Я понимаю ошибку, я просто не знаю, как ее исправить, не давая каждому свойству оператор set
.
Вот мой код:
Персона Класс:
public class Person : INotifyPropertyChanged
{
private string _FirstName;
private string _LastName;
public string FirstName
{
get { return this._email; }
set
{
this._FirstName = value;
OnPropertyChanged("FirstName");
OnPropertyChanged("FirstNameView");
}
}
public string LastName
{
get { return this._password; }
set
{
this._LastName = value;
OnPropertyChanged("LastName");
OnPropertyChanged("FirstNameView");
}
}
public string FirstNameView
{
get { return this.FirstName; }
}
public string LastNameView
{
get { return this.LastName; }
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName) { /*...*/ }
}
PeopleViewSampleData.xaml:
<sample:People xmlns:sample="clr-namespace:MyProgram">
<sample:Person FirstNameView="John" LastNameView="Doe" />
</sample:People>
РЕДАКТИРОВАТЬ, РЕШЕНИЕ:
Установив ItemSource
, DataContext
и :DataContext
следующим образом, он заработал. Если бы чего-то не хватало, ничего бы не показывалось.
<ListView ItemsSource="{Binding}"
DataContext="{Binding}"
d:DataContext="{d:DesignData Source=/SampleData/PeopleListViewSampleData.xaml}"/>