void OnComboBoxStatementDropDownClosed(object sender, FillItemsNeededEventArgs e)
        {
            IsComboOpen = false;

            UpdateDocumentBinding();
        }
        /// <summary>
        /// when requested it fills the comboboxes with items from the graph
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        protected void OnFillItemsNeeded(object sender, FillItemsNeededEventArgs args)
        {
            ComboBox comboBox = sender as ComboBox;

            if (comboBox != null && args != null)
            {
                object selectedItem = comboBox.SelectedItem;
                 
                switch (args.Statement)
                {
                    case Statement.Select:
                        FillItemsWithNextNodesLabels(comboBox);
                        break;

                    case Statement.Load:

                        comboBox.Items.Clear();
                        FillItemsWithIncomingOutputsFromPreviousNodes(comboBox);
                        break;
                }

                if (comboBox.Items.Contains(selectedItem))
                {
                    comboBox.SelectedItem = selectedItem;
                }
            }
        }
 /// <summary>
 /// If any of child comboboxes is opened fire the FillItemsNeeded
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void OnComboBoxStatementDropDownOpened(object sender, FillItemsNeededEventArgs args)
 {
     IsComboOpen = true;
     if (FillItemsNeeded != null)
     {
         FillItemsNeeded(sender, args);
     }
 }