У меня проблема с отображением данных в GridView. Я не могу понять, что это правильно, и я не мог найти никаких других тем. Наверное, я наблюдаю за чем-то очень простым.Связывание данных CollectionViewSource и GridView
Я получил этот GridView:
<GridView ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Width="383" Height="216"/>
<Button Content="Button" Click="Button_Click" />
Я получил эту CollectionViewSource:
<Page.Resources>
<CollectionViewSource x:Name="itemsViewSource" Source="{Binding NamesList, Mode=TwoWay}"/>
</Page.Resources>
и этот код позади:
лицо Класс:
public class Person : INotifyPropertyChanged {
private string m_name;
private string m_gender;
public event PropertyChangedEventHandler PropertyChanged;
public string Name {
get {
return m_name;
}
set {
m_name = value;
RaisePropertyChanged("Name");
}
}
public string Gender {
get {
return m_gender;
}
set {
m_gender = value;
RaisePropertyChanged("Gender");
}
}
protected void RaisePropertyChanged(string PropertyName) {
var eventhandler = this.PropertyChanged;
if (eventhandler != null) {
eventhandler(this, new PropertyChangedEventArgs(PropertyName));
}
}
}
Главная :
public sealed partial class MainPage : Page{
public ObservableCollection<Person> NamesList {get; set;}
public MainPage(){
this.InitializeComponent();
Person p = new Person();
Person p2 = new Person();
Person p3 = new Person();
p.Name = "Piet";
p.Gender = "Male";
p2.Name = "Pietin";
p2.Gender = "Female";
p3.Name = "Piet de tweede";
p3.Gender = "Male";
NamesList = new ObservableCollection<Person>();
NamesList.Add(p);
NamesList.Add(p2);
NamesList.Add(p3);
}
: private void Button_Click(object sender, RoutedEventArgs e) {
itemsViewSource.Source = NamesList;
}
}
Почему мой GridView не отображает данные или не добавляет данные на нажатия кнопок?
@edit 16:16 - 15-09-2014 Если после щелчка я добавляю следующее, он показывает элементы. Но это не так, как должно быть.
itemsViewSource.Source = NamesList;
@edit 9:04 - 16-09-2014 Я добавил эту отладочную изображение, чтобы показать, что связывание хорошо, он может найти NamesList. Но если я посмотрю на itemsViewSource, он говорит, что Source имеет значение null.
Я просто изменил его на ObservableCollection с помощью функции INotifyPropertyChanged, я отредактирую вопрос. – Sliver2009
'NamesList' - поле, а не свойство. WPF может привязываться только к свойствам. – GazTheDestroyer
Я преобразовал его в свойство, но он все еще не отображается. (Это приложение для магазина Windows 8.1) Как получилось, когда я установил источник в коде справа на NamesList, он работает? (Например, при событии нажатия кнопки) – Sliver2009