目前,当我向其添加新项目时,我将DataGrid
滚动到底部,如下所示:
// responses is an ObservableCollection where I add the content from http responses
responses.Add(content);
// dataGrid.ItemsSource is binded to responses
dataGrid.ScrollIntoView(content);
现在我的想法是将用于将项目添加到事件处理程序的方法中将DataGrid
滚动到底部的逻辑移动:
((INotifyCollectionChanged)DataGrid.Items).CollectionChanged += CollectionChangedEventHandler;
private void CollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs e)
{
var itemCollection = sender as ItemCollection;
// How to access ModelParent here?
}
如果我调试我的代码,我可以看到itemCollection
对象上有属性ModelParent
,它似乎是正确的DataGrid
。但是,我无法访问它,甚至没有反射:
var dataGrid = itemCollection.GetType().GetProperty("ModelParent").GetValue(itemCollection);
itemCollection.GetType().GetProperty("ModelParent")
只返回null
。是否可以通过DataGrid
从事件处理程序内部访问sender
(我有多个DataGrids,我想使用相同的事件处理程序)或者我在这里咆哮错误的树?
答案 0 :(得分:0)
是否可以通过
DataGrid
从事件处理程序内部访问sender
,或者我在这里咆哮错误的树?
没有。 sender参数引用引发ItemCollection
事件的ObservableCollection<T>
或CollectionChanged
实例。此集合没有引用绑定到集合的DataGrid
控件,并将其显示在UI中。
你需要找到另一种方法来做你想做的事情。尝试访问DataGrid
CollectionChanged
事件处理程序中的ObservableCollection<T>
并不是一个好主意。