我有一个 wpf Treeview,它有一个动态的 itemssource。用户可以在运行时添加和删除项目。我错过了一个事件,它为我提供了当前添加到树视图 itemsSource 中的 UIElement。所以我想我需要切换到 OnCollectionChanged。
这就是我所拥有的:
// MyItemViewModel is a viewmodel for a TreeViewItem
// MyCollection is bound to hte Treeview's ItemsSource
public class MyCollection : ObservableCollection<MyItemViewModel>
{
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
// i like to have the UIelement which was added to the collection
// (e.NewItems contains the FrameworkElement's DataContext)
break;
}
}
}
我尽可能地关注 MVVM,并且不想在视图模型中保留任何视图元素。我喜欢在添加项目时触发一个事件,该事件在其发送者或 EventArgs 中提供新添加的 UIElement。
我已经尝试过 ItemContainerGenerator 类,但它在视图模型中没有用,因为它已经需要一个 UIElement 控件。