ich UserControlViewModel
habe, die ein Ereignis auslöst:Wo Zugriff auf Datacontext in WinRT XAML Usercontrol
public event EventHandler<EventArgs> StuffDone;
die Aufgabe UserControlViewModel
erstellt und initialisiert innen MainPageViewModel
:
this.userControlViewModel = new UserControlViewModel();
MainPageViewModel
ist die Ansicht -Modell für MainPage
.
In MainPage.xaml, habe ich den folgenden Code bekam UserControlView
UserControl
in MainPage
zu platzieren und initialisieren seine DataContext
:
<views:UserControlView DataContext="{Binding userControlViewModel, Mode=OneWay}" IsHitTestVisible="False"></views:UserControlView>
Bisher funktioniert alles einwandfrei.
Jetzt möchte ich StuffDone
Ereignis innerhalb UserControlView
unterzeichnen. Das erste, was mir einfällt, ist, es innerhalb Loaded
Event-Handler von UserControlView
; jedoch ist die DataContext
an diesem Punkt immer noch null
. Scanning den Rest von UserControl
Ereignisse gab mir keine Ahnung.
Also, wo ist der richtige Ort, um die DataContext
zu bekommen und seine Veranstaltungen zu abonnieren?
Vielen Dank im Voraus.
Schmerzhaft. Es gibt kein Ereignis und keine überschreibenden Metadaten für die DataContext-Abhängigkeitseigenschaft. Geh nach Hause, Microsoft, du bist betrunken. Dieser Typ hat hier eine Lösung: http://doteteers.net/blogs/vbandi/archive/2013/01/23/datacontextchanged-event-for-winrt.aspx Hacky. – Will
Ich habe das schon mal gemacht und es funktioniert gut für mich. Aber ich habe "Mode = TwoWay" benutzt. Im Loaded-Ereignis von UserControl kann ich auf ViewModel zugreifen (natürlich müssen Sie DataCotext auf Ihr ViewModel übertragen, um darauf zuzugreifen) – SachiraChin
@Sach, was genau gemacht? was [Will] (http://stackoverflow.com/users/1228/will) vorgeschlagen? Wenn es etwas anderes ist, können Sie bitte ein Beispiel dafür geben, was Sie getan haben? – TheBlueSky