假设我有这段代码:
public class ViewModel {
public ObservableCollection<string> Items;
}
并在后面的代码中使用它
public ViewModel MyViewModel = new ViewModel();
public Constructor() {
this.DataContext = MyViewModel;
}
以下视图
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding Path=Items}">...</ItemsControl>
上述代码没有按预期工作。控件未填充。
然而这有效:
this.itemsControl.ItemsSource = this.MyViewModel.Items;
任何人都可以解释原因吗?
答案 0 :(得分:0)
绑定只能在公共属性上进行。
如果Items
是字段,请说...
public class ViewModel {
public ObservableCollection<string> Items;
}
然后以下不会绑定到该字段。
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding Path=Items}">...</ItemsControl>
您需要将视图设为一个属性,以便能够查看并绑定它。
public class ViewModel {
public ObservableCollection<string> Items {get; set;}
}
这只是一个简单的例子。通常INotifyPropertyChanged
和喜欢的人仍然适用。