我希望有人能告诉我这种行为的原因:
如果我执行以下操作:
<DataGrid ItemsSource="{Binding Model.Bytes}" .../>
我的ViewModel构造函数:
public ViewModel()
{
Model = new Message();
Model.Bytes.Add(new Byte(){Range = "42"});
}
没有任何反应,输出窗口也没有显示任何错误。
但是如果我包装这个Byte集合:
public ICollection<Byte> Bytes
{
get { return Model.Bytes; }
set
{
Model.Bytes = value;
RaisePropertyChanged(()=> Bytes);
}
}
写下:
<DataGrid ItemsSource="{Binding Bytes}".../>
数据网格显示条目,我可以添加新条目。
我的消息类
public Message()
{
Bytes = new ObservableCollection<Byte>();
}
public virtual ICollection<Byte> Bytes
{
get { return GetValue(() => Bytes); }
set { SetValue(() => Bytes, value); }
}
我认为这是一个通知问题,但我不知道在哪里或为什么......
提前谢谢
答案 0 :(得分:0)
<DataGrid ItemsSource="{Binding Model.Bytes}" .../>
这意味着您的DataContext必须是具有PUBLIC属性MODEL的对象,并且此属性的类型必须具有PUBLIC属性Bytes。如果是这种情况,那么它似乎只是一个通知问题。
只需在运行时使用Snoop检查DataContext和Binding。