Этот вопрос является продолжением этого вопроса. По сути, я хочу добавить узлы к моему treeView
в числовом порядке. Сейчас я работаю со списком дочерних узлов. У каждого ребенка есть DisplayName
числового значения. В моей программе есть цикл, который проверяет, имеет ли добавляемый узел DisplayName
меньше, чем DisplayName
текущего дочернего элемента в цикле. Если DisplayName
нового ребенка меньше, чем проверяемый ребенок, я хотел бы добавить новый узел перед уже существующим. У меня возникли проблемы с определением метода для этого.
Вот мой код:
var node = Data.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.identify == 'B');
//Get # of children -- if children exist
if (node.Children.Count() > 0)
{
newChildTitle = int.Parse(nodeName.Value); //node to add
for (int i = 0; i < node.Children.Count(); i++)
{
currentChildTitle = int.Parse(node.Children.ElementAt(i).DisplayName.Value); //current node value
if (newChildTitle == currentChildTitle) //Check if location already exists
{
MessageBox.Show("Sorry, that location name already exists under this category.", "Duplicate Location Name", MessageBoxButton.OK, MessageBoxImage.Warning);
break;
}
else if (newChildTitle < currentChildTitle) //If new location value is less, add before current location in Tree
{
//CODE WOULD GO HERE**
break;
}
}
}
else //if no children exist, just add
node.Children.Add(CreateBlockingLocation(model, blockTreeCollection, nodeName));
XAML TreeView
(TreeView
привязан к ObservableCollection
):
<!-- Tree view items & Functions -->
<TreeView Name="Tree_One" IsEnabled="{Binding DataContext.DataTreeEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" ItemsSource="{Binding DataTree.Data}" />
Данные и свойства ObservableCollection<HierarchicalVM>
, к которым привязан TreeView
:
private HierarchicalVM _parent;
private ObservableCollection<HierarchicalVM> _children;
public HierarchicalVM()
{
Commands = new ObservableCollection<Command>();
}
//Relationship Properties
public HierarchicalVM Parent
{
get { return _parent; }
set
{
_parent = value;
NotifyPropertyChange(() => Parent);
}
}
public ObservableCollection<HierarchicalVM> Children
{
get { return _children ?? (_children = new ObservableCollection<HierarchicalVM>()); }
set { _children = value; }
}
Текущая попытка решения:
//Gets parent item (Data is the complete Tree)
var node = Data.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.identify == 'B');
if (!node.Children.Any(n => n.numValue == newNumValue))
{
//Error is on this line: **Operator '.' cannot be applied to operand of type 'void'
node.Children = node.Children.Add(newNode).Orderby(n => n.numValue);
}
node.Children.Add()
- это неправильный способ добавления дочернего узла? Как тогда правильно добавить детей? - person Eric after dark   schedule 11.03.2014TreeView
. Думаю, мне просто нужно знать правильные операции для использования в коллекции. - person Eric after dark   schedule 11.03.2014ObservableCollection
относится к типу ViewModel. Я опубликую то, что я думаю, что вы ищете. - person Eric after dark   schedule 11.03.2014