WPF DataContext不起作用,但设置ItemsSource工作

时间:2018-01-20 02:37:54

标签: c# wpf xaml mvvm

假设我有这段代码:

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;

任何人都可以解释原因吗?

1 个答案:

答案 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和喜欢的人仍然适用。