Интересно, может ли кто-нибудь предоставить простой пример следующего. (желательно в VB.Net):LINQ to SQL как источник привязки данных для WPF Treeview
У меня есть база данных SQL со связанными таблицами, и я успешно использую LINQ to SQL в других областях моего приложения, но немного застрял в Heirarchical Treeview.
Я просто хотел бы использовать запрос LINQ из базы данных в качестве источника для WPF Treeview. Если я могу установить ItemSource для treeview в качестве результата LINQ и просто установить привязку данных для элементов treeview к различным столбцам, которые сделают мой день, но я не могу заставить его готовить.
Проведя часы в сети, я не могу найти много примеров, которые показывают это совсем просто. Я нашел похожие идеи, но ничего простого и конкретного для новичка, как я.
Насколько я понимаю, отношения, определенные в файле DBML, остаются неизменными при выполнении запроса LINQ. Итак, могу ли я иметь что-то вроде этого как ItemSource для Treeview?
Dim pdc As New ProjectDataContext()
Public Property Selection() As Integer
Dim tree = From c In pdc.Customers _
Where c.CustomerID = _Selection _
Select c
projecttreeview.ItemsSource = tree
Затем привязки для TreeView предметов может быть просто {Binding CUSTOMERNAME) для родительского узла и сказать {Binding} Orders.OrderName в качестве дочернего узла. например:
<TreeView Name="projecttreeview">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Customers}">
<TextBlock.Text="Binding CustomerName}"/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock.Text="{Binding Orders.OrderName}"/>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Очевидно, что это не совсем так, как хотелось бы. Любые указатели будут очень благодарны.
P.S. Я действительно не знаю LINQ to SQL, поэтому вам нужно прочитать MSDN для правильного метода, чтобы включить связанный объект, но «указатель» был дан :) – archimed7592
Спасибо за подсказку, У меня было ощущение, что есть проблема с другими таблицами, которые не отображаются должным образом. Исследование наилучшего способа использования оператора «Включить», который, кажется, немного минного поля его собственного ... – yimbot
Посмотрите на тему «Отношения» в [this] (http://msdn.microsoft.com/en-us/library /bb425822.aspx#linqtosql_topic11) учебник - есть примеры, как это сделать. Что-то вроде этого: DataShape ds = new DataShape(); ds.LoadWith (c => c.Orders); db.Shape = ds; var q = от c в db.Customers где c.City == "London" select c; HTH. –
archimed7592