Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 具有一对多Linq到SQL表的Treeview_Wpf_Vb.net_Linq To Sql - Fatal编程技术网

Wpf 具有一对多Linq到SQL表的Treeview

Wpf 具有一对多Linq到SQL表的Treeview,wpf,vb.net,linq-to-sql,Wpf,Vb.net,Linq To Sql,我有两张关于汽车的桌子: <Table(Name:="tblManufacturer")> Public Class dbManufacturers Private _ManufacturerID As Integer <Column(Storage:="_ManufacturerID", DbType:="int IDENTITY NOT NULL", IsPrimaryKey:=True, IsDbGenerated:=True, Name:="Manuf

我有两张关于汽车的桌子:

<Table(Name:="tblManufacturer")> Public Class dbManufacturers

    Private _ManufacturerID As Integer
    <Column(Storage:="_ManufacturerID", DbType:="int IDENTITY NOT NULL", IsPrimaryKey:=True, IsDbGenerated:=True, Name:="ManufacturerID")> _
    Public Property ManufacturerID() As Integer
        Get
            Return Me._ManufacturerID
        End Get
        Set(value As Integer)
            Me._ManufacturerID = value
        End Set
    End Property

    Private _ManufacturerName As String
    <Column(Storage:="_ManufacturerName", DbType:="Varchar(50)", Name:="ManufacturerName")> _
    Public Property ManufacturerName() As String
        Get
            Return Me._ManufacturerName
        End Get
        Set(value As String)
            Me._ManufacturerName = value
        End Set
    End Property

    Private _Models As EntitySet(Of dbModels) = New EntitySet(Of dbModels)
    <Association(Storage:="_Models", DeleteRule:="CASCADE", OtherKey:="ManufacturerID")> _
    Public Property Models As EntitySet(Of dbModels)
        Get
            Return _Models
        End Get
        Set(value As EntitySet(Of dbModels))
            _Models.Assign(value)
        End Set
    End Property

End Class

<Table(Name:="tblModels")> Public Class dbModels

    Private _ModelID As Integer
    <Column(Storage:="_ModelID", DbType:="int IDENTITY NOT NULL", IsPrimaryKey:=True, IsDbGenerated:=True, Name:="ModelID")> _
    Public Property ModelID() As Integer
        Get
            Return Me._ModelID
        End Get
        Set(value As Integer)
            Me._ModelID = value
        End Set
    End Property

    Private _ManufacturerID As Integer
    <Column(Storage:="_ManufacturerID", DbType:="int", Name:="ManufacturerID")> _
    Public Property ManufacturerID() As Integer
        Get
            Return Me._ManufacturerID
        End Get
        Set(value As Integer)
            Me._ManufacturerID = value
        End Set
    End Property

    Private _ModelName As String
    <Column(Storage:="_ModelName", DbType:="Varchar(200)", Name:="ModelName")> _
    Public Property ModelName() As String
        Get
            Return Me._ModelName
        End Get
        Set(value As String)
            Me._ModelName = value
        End Set
    End Property

End Class
所以我得到了制造商列表,但没有嵌套模型。有没有办法让它工作,或者我必须改变我执行LINQ查询的方式

我很难找到类似的treeview示例。

找到了。
还有一点需要学习数据绑定的微妙艺术

        <TreeView Name="TreeView1" Margin="3" ItemsSource="{Binding ElementName=ManufacturerInfo, Path=tblManufacturers}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Path=Models}">
                    <TextBlock Text="{Binding Path=ManufacturerName}" />
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=ModelName}" />
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

Public Class ManufacturerInfo

    Private LinqDB As New DataContext(My.Settings.dbConnection)
    Property tblManufacturers As Table(Of dbManufacturers) = LinqDB.GetTable(Of dbManufacturers)()

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub ManufacturerInfo_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Me.DataContext = Me
    End Sub

End Class
        <TreeView Name="TreeView1" Margin="3" ItemsSource="{Binding ElementName=ManufacturerInfo, Path=tblManufacturers}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Path=Models}">
                    <TextBlock Text="{Binding Path=ManufacturerName}" />
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=ModelName}" />
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>