0

ツリー ビューで展開中のアイテムをクリックしたときに表示されるプログレス バーを追加しようとしています。このバーは、アイテムがクリックされた直後に表示され、アイテムが展開されると非表示になります。ここで見つけたこのイベントのハンドラーを追加しようとしました が、機能していません。

私はこのように使用しています:

 treeItemsToAdd = new MyTreeViewItem();
 treeItemsToAdd.Expanding += treeItemsToAdd_Expanding;

これが機能しない理由がわかりません... treeItemsToAdd_Expanding イベントは、アイテムが展開された後にのみ発生します

4

1 に答える 1

-1

OnExpanded 仮想メソッドをオーバーライドし、デフォルトの実装の前に Expanding イベントを発生させることをお勧めします。

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); }
}
于 2013-03-26T15:17:43.753 に答える