vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
WPF Datagrid: Binding an ObservableCollection funktioniert nicht 
Autor: Sascha_R
Datum: 15.06.12 09:47

Hallo,

ich habe folgendes Problem:
Ich habe in der ViewModel-Klasse (PCSummaryViewModel) eine ObservableCollection basierend auf der Klasse (PCViewModel), welche ebenfalls eine ViewModel-Klasse darstellt.

Diese ObservableCollection möchte ich nun an das Datagrid binden.

Leider werden mir immer keine Daten angezeigt.


Hier alles relevante an Code:

ViewModel-Klasse als Basis für die ObservableCollection


Public Class PCViewModel
Inherits ViewModelBase
 
#Region "Properties PC"
 
 
    Private _myPC As PC
    Private _myGB As GraphicBoard
    Private _myModel As Model
    Private _myMan As Manufacturer
 
    Public Property myMan As Manufacturer
        Set(ByVal value As Manufacturer)
            _myMan = value
            RaisePropertyChanged("myMan")
        End Set
        Get
            Return _myMan
        End Get
    End Property
    Public Property myGB As GraphicBoard
        Set(ByVal value As GraphicBoard)
            _myGB = value
            RaisePropertyChanged("myGB")
        End Set
        Get
            Return _myGB
        End Get
    End Property
    Public Property myPC As PC
    Set(ByVal value As PC)
        _myPC = value
        RaisePropertyChanged("myPC")
    End Set
    Get
        Return _myPC
    End Get
    End Property
    Public Property myModel As PCModel
    Set(ByVal value As PCModel)
        _myModel = value
        RaisePropertyChanged("myModel")
    End Set
    Get
        Return _myModel
    End Get
    End Property
 
 
#End Region
 
 
 
    Sub init()
 
        myPC = New PC
        myModel = New PCModel
        myMan = New Manufacturer
        myCPU = New CPU
        myGB = New GraphicBoard
        mySupplier = New Supplier
 
    load_Data()
 
    End Sub
 
   Public Sub New()
        INIT
   End Sub
 
     Public Sub New(ByVal pPCName As String)
        init()
   End Sub
 
  Private Sub load_Data(Optional ByVal pPCName As String = "*")
 
        myPC.getPC(pPCName) 
 
        myModel.getModel(myPC.pc_pcM_ID)
 
        myMan = New Manufacturer
        myMan.getManufacturer(myModel.model_Man_ID)
 ...
 
     End Sub
End Class
ViewModel-Klasse die an das Datagrid gebunden werden soll :

Public Class PCSummaryViewModel
Inherits ViewModelBase
 
Private _pcs As ObservableCollection(Of PCViewModel)
Public Property pcs As ObservableCollection(Of PCViewModel)
    Set(ByVal value As ObservableCollection(Of PCViewModel))
        _pcs = value
 
        RaisePropertyChanged("pcs")
    End Set
    Get
        Return _pcs
    End Get
End Property
 
 
Public Sub New()
    '_pcs = New ObservableCollection(Of PCViewModel)
 
 
    pcs = New ObservableCollection(Of PCViewModel)
   getPCs()
 
End Sub
 
Public Sub getPCs()
    Dim pcvm As PCViewModel
    Dim _pcvms As New ObservableCollection(Of PCViewModel)
    Dim foundPCs As New ObservableCollection(Of PC)
    Dim _model As PCModel
    Dim _man As Manufacturer
    foundPCs = PC.getAllPCs(1)
 
    For Each _pc As PC In foundPCs
 
        pcvm = New PCViewModel
        pcvm.myPC = _pc
 
        _model = New PCModel
        _model.getModel(_pc.pc_pcM_ID)
        pcvm.myModel = _model
 
        _man = New Manufacturer
        _man.getManufacturer(_model.model_ID)
        pcvm.myMan = _man
 
        _pcvms.Add(pcvm)
    Next
    Debug.Print("Got " & pcs.Count.ToString & " pcs")
 
    pcs = _pcvms
 
End Sub
End Class
Die Binding-Struktur sieht wie folgt aus:


Mein XAML für das Datagrid sieht wie folgt aus:

<DataGrid ItemsSource="{Binding viewPCModel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Path=pcs/}" AutoGenerateColumns="true" DataContext="{Binding Source={StaticResource viewModelPC}}">
<DataGrid.Columns>

<DataGridTextColumn x:Name="PCName"
Header="PC-Name"
Binding="{Binding Path=pcs/myPC.pc_Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Source={StaticResource viewModelPC}}"></DataGridTextColumn>
<DataGridTextColumn x:Name="InventoryNo"
Header="Inventar-Nr"
Binding="{Binding Path=pcs/myPC.pc_InventoryNo}">
</DataGrid.Columns>

</DataGrid>



Vielen Dank im voraus!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
WPF Datagrid: Binding an ObservableCollection funktioniert n...2.399Sascha_R15.06.12 09:47

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel