Example #1
0
    /// <summary>
    /// focus on a node.
    /// </summary>
    /// <param name="node"></param>
    public void FocusOn(Node node)
    {
        var parent       = node.Parent ?? Root;
        var oldFocusList = FocusList;

        FocusList = parent.ChildNodeList;
        if (oldFocusList == FocusList)
        {
            FocusList.SelectItem(node);
        }
        else
        {
            if (oldFocusList != null)
            {
                oldFocusList.SelectionChanged -= FocusList_SelectionChanged;
            }

            if (node != null)
            {
                FocusList.SelectItem(node);
            }

            FocusList.SelectionChanged += FocusList_SelectionChanged;

            OnFocusNodeChanged?.Invoke(FocusList, new FocusNodeChangedArgs {
                SelectedNode = FocusList.SelectedItem, DeselectNode = oldFocusList?.SelectedItem
            });
        }
    }
Example #2
0
 /// <summary>
 /// on the focus item changed.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void FocusList_SelectionChanged(object sender, SelectableList <Node> .SelectChangedEventArgs e)
 {
     OnFocusNodeChanged?.Invoke(sender, new FocusNodeChangedArgs {
         SelectedNode = e.SelectItem, DeselectNode = e.DeselectItem
     });
 }