Ich habe ein Benutzersteuerelement erstellt, das ViewModelA() als sein ViewModel hat, dann befindet sich in meiner View ein StackPanel, das ViewModelA.Data als DataContext verwendet.Wie bekomme ich mein original ViewModel?
Mein Problem ist in diesem StackPanel, ich habe eine Schaltfläche, die meine erstellte ICommand in ViewModelA() implementieren muss. Wie kann ich das machen?
Gibt es etwas wie <Button DataContext="DataContext.Parent" />
oder so ähnlich?
Hier ist, wie ich meine Viewmodel und View implementiert:
App.xaml
<DataTemplate DataType="{x:Type vm:ViewModelA}">
<vw:ViewA />
</DataTemplate>
ViewA.xaml (wo der Knopf innerhalb des Stapels Panel sollte die ICommand implementieren)
<StackPanel x:Name="RightPaneDetails"
Grid.Column="1"
Margin="15,0,0,30"
DataContext="{Binding Data}">
<!-- Some controls goes here that binds to ViewModelA.Data properties -->
<StackPanel Orientation="Horizontal">
<Button DataContext={Binding} Command="{Binding LookupCommand}" /> <!-- This button should implement the ViewModelA.LookupCommand -->
</StackPanel>
</StackPanel>
TIA
PS, ViewModelA.Data ist mein Modell.
Datacontext geerbt wird die visuelle Struktur nach unten bewertet werden, um sicherzustellen, gibt es keine Notwendigkeit Datacontext überhaupt angeben. Entfernen Sie den gesamten DataContext in ViewA. Alle Steuerelemente sollten ihren DataContext zurück auf ViewModelA setzen. – Jai
Ja, ich verstehe. Aber meine Steuerelemente (Textfelder und Beschriftungen) sind von den Eigenschaften von ViewModelA.Data begrenzt ... Wäre es hässlich, wenn ich ' ............ ' dann in alle entfernen würde Meine Bindung steuert als ' ' –
Versuchen Sie AnjumSKhan Antwort ohne den DataContext-Teil. – Jai