WPF MVVM Binging: Binden interner Klassen-Objekte

  • WPF

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von MarioD.

    WPF MVVM Binging: Binden interner Klassen-Objekte

    Hallo zusammen,

    ich möchte eine simple Bindung eines Objektes an Textboxen realisieren. Im meinem Szenario habe ich eine Klasse 'Order' (Auftrag), die ein Objekt der Klasse 'Article' (Artikel) besitzt.

    In einem Window gibt der User eine Auftragsnummer (OrderId) ein und alle Daten des korrespondierenden Auftrags, u.A. der Artikel werden aus einer Datenabnk geladen.
    Diese Daten möchte ich nun in Textboxen sichtbar machen. Dazu müssen Properties des Article-Objektes an Textboxen gebunden werden.

    Hier erstmal meine Klassen: (Ich habe den Code über den SharpDevelop-Converter von C# in VB.NET übersetzten lassen, weiß aber nicht ob die Syntax 100% stimmt. Das ist hier aber zweitrangig, da ich in C# entwickel)

    VB.NET-Quellcode

    1. Public Partial Class Window1
    2. Inherits Window
    3. Private _vmOrder As Order
    4. Public Sub New()
    5. InitializeComponent()
    6. End Sub
    7. End Class
    8. Public Class Order
    9. Implements INotifyPropertyChanged
    10. Public Event PropertyChanged As PropertyChangedEventHandler
    11. Private _orderId As Integer
    12. Private _article As Article
    13. Public Property OrderId() As Integer
    14. Get
    15. Return _orderId
    16. End Get
    17. Set
    18. _orderId = value
    19. OnPropertyChanged("OrderId")
    20. End Set
    21. End Property
    22. Public Property Article() As Article
    23. Get
    24. Return _article
    25. End Get
    26. Set
    27. _article = value
    28. OnPropertyChanged("Article")
    29. End Set
    30. End Property
    31. #Region "INotifyPropertyChanged"
    32. Protected Sub OnPropertyChanged(propertyName As String)
    33. RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    34. End Sub
    35. #End Region
    36. End Class
    37. Public Class Article
    38. Implements INotifyPropertyChanged
    39. Public Event PropertyChanged As PropertyChangedEventHandler
    40. Private _articleId As Integer
    41. Public Property ArticleId() As Integer
    42. Get
    43. Return _articleId
    44. End Get
    45. Set
    46. _articleId = value
    47. OnPropertyChanged("ArticleId")
    48. End Set
    49. End Property
    50. #Region "INotifyPropertyChanged"
    51. Protected Sub OnPropertyChanged(propertyName As String)
    52. RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    53. End Sub
    54. #End Region
    55. End Class


    Meine Idee war nun das Binding im XAML-Code des Views folgendermaßen zu realisieren:

    XML-Quellcode

    1. <TextBox x:Name="textBoxArticleId" DataContext="{DynamicResource _vmOrder.Article}" Text="{Binding ArticleId, Mode=TwoWay}" ... />


    Funktioniert so aber nicht! Kann ich das auf diese Weise überhaupt realisieren? Jemand ne Idee?

    Gruß,

    Mario