locked
Daten Seitenweise übergeben RRS feed

  • Frage

  • Hallo

    Ich versuche mich gerade an dem MVVM und statt antworten, finde ich immer mehr fragen... ;)

     

    Folgende Situation, die gelöst werden soll:

    Ein Grid ist an eine DomainDataSource gebunden und ist hierachisch aufgebaut.

    Der Endnutzer soll die Möglichkeit haben, wenn er auf ein TabItem clickt (ich spreche hier von einem TabControl), weitere Daten sehen zu können.

    Im ersten Schritt habe ich alle Informationen in eine riesen XAML Datei gepackt und jetzt möchte ich das ein bisschen schöner strutkuieren und deshalb möchte ich das ein ein neues usercontrol auslagern.

    Wenn ich jetzt in dem TabItem (das der Endnutzer anklickt) mein usercontrol aufrufe sehe ich die gewünschte Seite, aber OHNE Daten. Ich möchte jetzt die Daten erst laden, wenn der User clickt.

    So, lange vorrede.- Genau da weiß ich nicht, wie ich einen Parameter (in diesem Fall die KundenID) übergeben kann.

    Ich habe diesen Beitrag gefunden http://www.c-sharpcorner.com/UploadFile/ptmujeeb/4164/ und habe das soweit auf mich umgebastelt. Jetzt ist es aber so, dass in dem gezeigten Beispiel ein Button die Eigenschaften Command & CommandProperty besitzen, damit die Daten übergeben werden.

    Mein TabPageItem besitzt diese Eigenschaften nicht (Ich nutze es von Telerik). - Kann mir bitte jemand sagen, wie ich die Daten dann richtig übergebe?

     

    Folgende Codes habe ich geschrieben:

    Namespace myClasses.ViewModel
    
      Public Class vBrille
        Public Property SetKundenID As Object
    
        Public Sub New()
          SetKundenID = New RelayCommand(New Action(Of Object)(AddressOf ShowPgBrille))
        End Sub
        Public Sub ShowPgBrille(obj As Object)
          Try
            Dim nKundenID = CLng(obj)
            Dim nPage As New Sites.Auftraege.pgBrille
            nPage.NewKundenID(nKundenID)
          Catch
            Throw New Exception("Es wurde nicht der erwartete Wertetyp übergeben")
          End Try
        End Sub
    
      End Class
    
    <pre lang="x-vbnet">Namespace myClasses.ViewModel
      Public Class RelayCommand
          Implements ICommand
    
    
    #Region "ICommand Members"
    
          Public Function CanExecute(parameter As Object) As Boolean Implements System.Windows.Input.ICommand.CanExecute
            Return True
          End Function
          Public Event CanExecuteChanged As EventHandler Implements System.Windows.Input.ICommand.CanExecuteChanged
          Public Sub Execute(parameter As Object) Implements System.Windows.Input.ICommand.Execute
            If parameter IsNot Nothing Then
              _action(parameter)
            Else
            Throw New Exception("Es wurde nicht der erwartete Wertetyp übergeben")
            End If
          End Sub
    #End Region
    
        Private _action As System.Action(Of Object)
    
          Sub New(action As System.Action(Of Object))
            ' TODO: Complete member initialization 
            _action = action
          End Sub
    
        End Class
    End Namespace
    

    End Namespace

    Tja, aber eben wie ich jetzt den richtigen XAML Code nutze, weiß ich nicht...

     

     

     

    Samstag, 30. Juli 2011 08:11

Antworten

  • Ich kenne die Telerik-Steuerelemente nicht, da mir das SDK reicht. An das TabItem hänge ich eine Attached behavior und entsprechenden Parameter (z.B. ID des Datensatzes) und beim Aktivieren wird das Holen des entsprechenden Datensatzes gestartet. Mit Eintreffen des asynchronen Endes des Ladevorganges wird des Datenobjekt an den Container (z.B. UserControl im TabItem) gebunden und über PropertyChanged mit Strng.Empty die Oberfläche aktualisiert. Wichtig dabei ist nur, die Überwachung des Klickverhaltens des Anwender, wenn dieser vor dem Ende des Ladevorganges genervt das nächste TabItem anklickt. Da kann man aber mit dem Dispatcher und einer Queue alles im Hintergrund ablaufen lassen.
     
    --
    Viele Gruesse
    Peter
    Samstag, 30. Juli 2011 09:36

Alle Antworten

  • Ich kenne die Telerik-Steuerelemente nicht, da mir das SDK reicht. An das TabItem hänge ich eine Attached behavior und entsprechenden Parameter (z.B. ID des Datensatzes) und beim Aktivieren wird das Holen des entsprechenden Datensatzes gestartet. Mit Eintreffen des asynchronen Endes des Ladevorganges wird des Datenobjekt an den Container (z.B. UserControl im TabItem) gebunden und über PropertyChanged mit Strng.Empty die Oberfläche aktualisiert. Wichtig dabei ist nur, die Überwachung des Klickverhaltens des Anwender, wenn dieser vor dem Ende des Ladevorganges genervt das nächste TabItem anklickt. Da kann man aber mit dem Dispatcher und einer Queue alles im Hintergrund ablaufen lassen.
     
    --
    Viele Gruesse
    Peter
    Samstag, 30. Juli 2011 09:36
  • Guten Morgen

     

    Bitte entschudlige meine verspätete Antwort! (War mal übers WOE weg...)

    Hast Du bitte vielleicht ein bisschen Code um nachvollziehen zu können was Du meinst?

     

    DANKE

    Dienstag, 2. August 2011 05:14
  • Hey

    Wollte mal fragen, ob Du zufällig doch noch Code findest!?

    DANKE

    Freitag, 5. August 2011 11:41