protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            TreeListView parent = WpfUtility.FindVisualParent <TreeListView>(this);
            TreeViewItem child  = element as TreeViewItem;

            if (parent != null && child != null)
            {
                parent.ApplySorting(child.Items);
            }
        }
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        var received = _receivedMouseDown;

        _receivedMouseDown = null;
        // validate that the mouse left button down event was called on this list box item
        if (received != this)
        {
            return;
        }
        var parent = WpfUtility.FindVisualParent <SelectOnMouseUpListBox>(this);

        parent.NotifyListItemClickedImp(this, e.ChangedButton);
        base.OnMouseLeftButtonUp(e);
    }