【发布时间】:2013-01-31 19:43:00
【问题描述】:
问题:让用户控件的“视图模型”(.xaml.cs 文件)知道 ListViewItem 已添加到 ListView 的“正确”方式是什么?请注意,this post 解决了不同的问题。
详情:
我有一个包含 ListView 和 DataContext 的 UserControl:
- ListView 有一个 ItemsSource={Binding ActionLogEntries}
- ActionLogEntries 是 DataContext 中的 ObservableCollection 属性
当某些事情发生时,数据上下文会将项目添加到 ListView。
但是没有 ListView.ItemAdded 事件。在数据上下文中的 ObservableCollection 上有一个 CollectionChanged 事件,但视图模型的该事件的处理程序可能会在项目添加到 ListView 之前被调用,因此这似乎不是一个好的策略。
仅供参考:这是因为当项目添加到 ListView 时,它不会自动滚动到新添加的项目,这是我必须添加的行为。大概我会在那之后使用 ScrollIntoView 。
【问题讨论】:
-
ListView的ItemContainerGenerator的ItemsChanged事件怎么处理?也许还为时过早...
-
这似乎有效。但是,事件 arg 有点奇怪:e.Position 是一个位置生成器,具有 Index 和 Offset 属性,如果您对最新添加的元素感兴趣,您似乎必须添加 index+offset。更多详情如下。
标签: wpf listview itemssource