Benutzer mit den meisten Antworten
Daten Seitenweise übergeben

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 NamespaceTja, 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- Als Antwort markiert Robert Breitenhofer Freitag, 12. August 2011 11:06
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- Als Antwort markiert Robert Breitenhofer Freitag, 12. August 2011 11:06
Samstag, 30. Juli 2011 09:36