如何在不使用线程的情况下向WPF树视图添加展开前事件
本文关键字:视图 WPF 添加 事件 情况下 线程 | 更新日期: 2023-09-27 18:06:09
我试图添加一个进度条,当在树视图中单击展开项时将显示该进度条。这个栏应该在项目被点击后显示,一旦项目被展开就不可见。我试图为这个事件添加一个处理程序,我在这里找到
我是这样使用它的:
treeItemsToAdd = new MyTreeViewItem();
treeItemsToAdd.Expanding += treeItemsToAdd_Expanding;
我不明白为什么这不起作用…treeItemsToAdd_Expanding事件仅在项目展开后触发
我建议重写OnExpanded虚拟方法,并在其默认实现之前引发expanded事件。
public class MyTreeViewItem : TreeViewItem
{
public static readonly RoutedEvent CollapsingEvent =
EventManager.RegisterRoutedEvent("Collapsing",
RoutingStrategy.Bubble, typeof(RoutedEventHandler),
typeof(MyTreeViewItem));
public static readonly RoutedEvent ExpandingEvent =
EventManager.RegisterRoutedEvent("Expanding",
RoutingStrategy.Bubble, typeof(RoutedEventHandler),
typeof(MyTreeViewItem));
public event RoutedEventHandler Collapsing
{
add { AddHandler(CollapsingEvent, value); }
remove { RemoveHandler(CollapsingEvent, value); }
}
public event RoutedEventHandler Expanding
{
add { AddHandler(ExpandingEvent, value); }
remove { RemoveHandler(ExpandingEvent, value); }
}
protected override void OnExpanded(RoutedEventArgs e)
{
OnExpanding(new RoutedEventArgs(ExpandingEvent, this));
base.OnExpanded(e);
}
protected override void OnCollapsed(RoutedEventArgs e)
{
OnCollapsing(new RoutedEventArgs(CollapsingEvent, this));
base.OnCollapsed(e);
}
protected virtual void OnCollapsing(RoutedEventArgs e) { RaiseEvent(e); }
protected virtual void OnExpanding(RoutedEventArgs e) { RaiseEvent(e); }
}