У меня есть встроенная работающая логика в WinForms для вставки данных в TreeView, которая поступает из БД, поэтому я не могу просто поставить datatable позади древовидного изображения и быть счастливым, потому что мне нужно строить узлы и undernodes и undernodes и т.д. Рабочий код в старых WinForms:WPF - TreeView добавляет детей к детям полностью динамически
private void waregroup()
{
DataSet myDataSet = new DataSet();
DataTable myDataTable = new DataTable();
string sqlStatement = "SELECT * FROM APWGRUPP ORDER BY WG_WGSCHL ASC";
string str_key = "";
string str_desc = "";
int int_node0 = 0;
int int_node1= 0;
int int_node2 = 0;
int int_node3 = 0;
int int_node4 = 0;
myDataSet = ImportDBF(sqlStatement);
myDataTable = myDataSet.Tables["Table"];
foreach (DataRow row in myDataTable.Rows)
{
str_desc = row.Field<string>(1);
str_key = row.Field<string>(2);
switch (str_key.Length)
{
case 1:
trv_waregroup.Nodes.Add(str_key + "-" + str_desc);
int_node0++;
int_node1 = 0;
int_node2 = 0;
int_node3 = 0;
int_node4 = 0;
break;
case 2:
trv_waregroup.Nodes[int_node0 - 1].Nodes.Add(str_key + "-" + str_desc);
int_node1++;
int_node2 = 0;
int_node3 = 0;
int_node4 = 0;
break;
case 4:
trv_waregroup.Nodes[int_node0 - 1].Nodes[int_node1 - 1].Nodes.Add(str_key + "-" + str_desc);
int_node2++;
int_node3 = 0;
int_node4 = 0;
break;
case 5:
trv_waregroup.Nodes[int_node0 - 1].Nodes[int_node1 - 1].Nodes[int_node2 - 1].Nodes.Add(str_key + "-" + str_desc);
int_node3++;
int_node4 = 0;
break;
case 6:
trv_waregroup.Nodes[int_node0 - 1].Nodes[int_node1 - 1].Nodes[int_node2 - 1].Nodes[int_node3 - 1].Nodes.Add(str_key + "-" + str_desc);
int_node4++;
break;
default:
trv_waregroup.Nodes[int_node0 - 1].Nodes[int_node1 - 1].Nodes[int_node2 - 1].Nodes[int_node3 - 1].Nodes[int_node4 - 1].Nodes.Add(str_key + "-" + str_desc);
break;
}
}
}
Теперь я не могу использовать логику с Items [Счетчик] .Add больше, но единственно возможное решение, я могу думать о том, используя перечисление. Но все, что я нашел, это использование заголовка как нового элемента для добавления нового узла в.
Я попробовал этот способ, но не получают годный к употреблению товара для работы с:
TreeViewItem temp = (TreeViewItem)_WareGroups.Items.GetItemAt(Node0 - 1);
_WareGroups.Items.Add(GroupKey + "-" + GroupDesc);
Каждый получил представление о том, как я могу добавить мои почти 2500 Items этот путь?
если это WPF, пожалуйста, удалите все, что ужасный код немедленно и начать чтение [здесь] (http://msdn.microsoft.com/en-us/library/ms752347 (v = vs.110) .aspx) и [здесь] (http: //www.codeproject. ком/Arti Cles/26288/Упрощая-The-МОФ-TreeView-на-Использование-The-ViewMode). –
В принципе, вы не добавляете узлы в TreeView или «создаете TreeViewItems» или что-то в этом коде в WPF. Вместо этого вы создадите правильную [Иерархическую структуру данных] (http://stackoverflow.com/questions/5386239/generics-and-parent-child-architecture), подходящую для использования [HierarchicalDataTemplate] (http: // blogs .msdn.com/б/mikehillberg/архив/2009/10/30/TreeView-и-HierarchicalDataTemplate-шаг за step.aspx). BTW. Также настоятельно рекомендуется, чтобы у вас было минимальное уважение к расслоению и перемещение кода, связанного с БД, с уровня пользовательского интерфейса. –
И, пожалуйста, используйте правильную оболочку для имен методов. Это должно быть 'WareGroup()', если угодно. –