WPF ListView.ItemsSource绑定问题

时间:2010-09-10 11:26:10

标签: c# .net mvvm binding

我有一个MainViewModel和Customers属性(CustomerViewModel对象列表作为ObservableCollection)。我想将该列表作为ItemsSource绑定到ListView控件。我的MainViewModel绑定到Window的DataContext属性。我使用ServiceLocator模式来创建MainViewModel实例,该实例在构造函数中获取IDataService接口作为参数。我使用接口向MainViewModel注入数据服务,并可以为Blend中的设计器创建一些测试数据。在Expression Blend中一切正常,数据显示正确,但是当我运行代码时,ItemsSource为null并且没有数据绑定。 DataContext是正确的。当我将DataContext设置为null并再次将其设置为MainViewModel实例时,ItemsSource会自动设置为Customers属性。为什么在应用程序启动时它不会自动绑定到Customers属性?

<Grid x:Name="LayoutRoot" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">
    <ListView Margin="12" x:Name="customerList"
              ItemsSource="{Binding Customers}">
        ...
    </ListView>
</Grid>

1 个答案:

答案 0 :(得分:2)

在创建视图之前,是否存在定位器的MainViewModel?如果稍后填充并且您没有触发NotifyPropertyChanged事件,则绑定将始终指向它最初绑定时的空值。