2011-01-13 44 views
4

工作,我有这样的XAML:列表框的ItemsSource绑定通过代码而不是通过XAML

<ListBox x:Name="MyItemsList"       
    ItemsSource="{Binding MyItems}" 
    SelectionChanged="ItemsList_SelectionChanged"> 

后面的代码分配页面视图模型的DataContext:

DataContext = App.ViewModel; 

我的视图模型对象定义MyItems(在设置DataContext之前初始化MyItems):

public ObservableCollection<Item> MyItems; 

最终结果是我的ListBox不显示任何东西。我尝试在绑定后添加项目,但他们也没有出现。

什么工作是,如果我设置的ItemsSource的代码,而不是在XAML:

MyItemsList.ItemsSource = App.ViewModel.MyItems; 

为什么这会发生任何提示?谢谢。

回答

2

公众的ObservableCollection MyItems; - 领域,但你应该使用财产!

物业与支持字段:

private ObservableCollection<Item> _myItems = new ObservableCollection<Item>(); 
public ObservableCollection<Item> MyItems{get{return _myItems;}} 

如果whant二传手,你应该执行INotifyPropertyChanged并调用OnPropertyChanged( “MyItems”)

+0

好一点;但它没有解决我的问题。如果我在XAML中将一个随机名称作为ItemsSource属性,它也不会给我一个错误(不是在构建中,而是在运行时),这是否是预期的?现在MyItems是一个属性{get;组; }和列表框仍然是空的。 – siger 2011-01-13 08:15:28

相关问题