GridView에 데이터를 표시하는 데 문제가 있습니다. 나는 그것을 올바르게 얻는 것처럼 보이지 않으며 나는 이것에 관해서 다른 주제를 찾을 수 없었다. 아마도 나는 정말로 간단한 것을 감독 할 것입니다.데이터 바인딩 CollectionViewSource 및 GridView
<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));
}
}
}
Mainpage 나는이 CollectionViewSource을 가지고
<GridView ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Width="383" Height="216"/>
<Button Content="Button" Click="Button_Click" />
:
나는이있는 gridview을 가지고있다 :
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시 4분 - 16-09-2014 나는 바인딩은, 그가 NamesList을 찾을 수있는 좋은 것을 보여주기 위해이 디버깅 이미지를 추가했다. 그러나 itemsViewSource를 보면 Source가 null이라고합니다.
방금 InotifyPropertyChanged를 사용하여 ObservableCollection으로 변경 했으므로 질문을 편집합니다. – Sliver2009
'NamesList'는 속성이 아닌 필드입니다. WPF는 속성에만 바인딩 할 수 있습니다. – GazTheDestroyer
속성으로 변환했지만 여전히 표시되지 않습니다. (Windows 8.1 저장소 응용 프로그램입니다.) 어떻게 코드를 소스에서 NamesList로 설정할 때 작동합니까? (예를 들어 내 버튼 클릭 이벤트에서) – Sliver2009