不显示DataGrid ItemsSource

时间:2015-09-08 12:41:42

标签: c# wpf datagrid

我希望有人能告诉我这种行为的原因:

如果我执行以下操作:

<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); }
}

我认为这是一个通知问题,但我不知道在哪里或为什么......

提前谢谢

1 个答案:

答案 0 :(得分:0)

 <DataGrid ItemsSource="{Binding Model.Bytes}" .../>

这意味着您的DataContext必须是具有PUBLIC属性MODEL的对象,并且此属性的类型必须具有PUBLIC属性Bytes。如果是这种情况,那么它似乎只是一个通知问题。

只需在运行时使用Snoop检查DataContext和Binding。