Mit Caliburn ist es sehr einfach, übergeben Sie einfach $ dataContext auf Ihrem XAML:
%Vor%Und ändern Sie Ihre Methode zu:
%Vor%// BEARBEITEN Entschuldigung, die obige Lösung funktioniert nur, wenn sich die Aktion auf der Datenplatte selbst befindet ... Eine andere Lösung wäre, eine SelectedItem-Bindung zu haben und sie einfach für Ihre Methode zu verwenden:
%Vor%und auf deinen Code:
%Vor%Sie können das tun, indem Sie die Steuerelementvorlage für die DataGridRows ändern, die von dem DataGrid verfügbar gemacht werden. Das folgende Beispiel verwendet WPF und das Aero-Design.
Das einzige, was ich getan habe, ist, Ihren vorherigen Aufruf call: Message.Attach zu entfernen und ihn in ein neues "placeholder" ContentControl zu verschieben, das den Rahmen (x: Name = DGR_Border) in der Kontrollschablone "default" umgibt. (Ich habe ContentControl verwendet, da es keine eigenen Visualisierungen enthält und ein MouseDoubleClick-Ereignis verfügbar macht.)
%Vor%Die einzige andere Sache, die Sie tun müssen, ist, Ihre RowSelect () -Methode zu ändern, um einen Parameter des von Ihnen verwendeten Typs zu akzeptieren (ich nahm an, dass es sich um einen Filmtyp handelt).
%Vor% Mein Beispiel dort ist eine Spalte mit NAME "service_id". Sie können aber auch den Spaltenoffset int32 verwenden.
Es gibt sogar eine ItemArray
im DataRowView TYPE, die ausgeführt und heruntergefahren werden soll. Siehe System.Data
namespace.
Ihre DataGrid-Item-Source / Context beeinflusst die "Objekte", die Sie im DataGrid sehen. Aber wenn Sie die Typen debuggen, können Sie sie umwandeln und verwenden.
Tags und Links .net c# mvvm xaml caliburn.micro