/// <summary>
        /// A static event listener which is invoked if a tree's node is being
        /// expanded. This event is being observed because nodes may need to
        /// be created if lazy loading is active.
        /// </summary>
        /// <param name="sender">The processed <see cref="TreeViewBase{T}"/>
        /// control.</param>
        /// <param name="e">Event arguments. The <see cref="RoutedEventArgs.OriginalSource"/>
        /// property provides the expanded tree node.</param>
        private static void OnTreeNodeExpanded(object sender, RoutedEventArgs e)
        {
            TreeViewBase <T> owner    = (TreeViewBase <T>)sender;
            TreeViewItem     treeNode = (TreeViewItem)e.OriginalSource;

            owner.OnNodeExpanded(treeNode);

            //do NOT mark as handled - the event may bubble up the tree:
            //e.Handled = true;
        }