WPF Items - Befehl auf Ansichtsmodell nicht Brennen von innen Items
-
05-07-2019 - |
Frage
Ich bin mit M-V-VM und habe einen Befehl auf meinem Ansichtsmodell namens 'EntitySelectedCommand'.
Ich habe versucht, alle Artikel in einem Itemscontrol zu bekommen diesen Befehl zu schießen, aber es ist nicht zu arbeiten.
Ich denke, es ist, weil jeder ‚Datacontext‘ Elemente der einzelnen Objekt wird das Element gebunden, anstatt das Ansichtsmodell?
Kann mir jemand in die richtige Richtung weisen bitte?
Cheers,
Andy
<ItemsControl ItemsSource="{Binding Path=LinkedSuppliers}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Controls:EntityLabel Grid.Column="0" Grid.Row="0" Content="{Binding Name}" CurrentEntity="{Binding }" EntitySelected="{Binding EntitySelectedCommand}" ></Controls:EntityLabel>
<StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Lösung
Ihr Verdacht ist richtig. Sie haben ein paar Optionen:
- Expose eine
EntitySelectedCommand
von Ihrem Kind View-Modell als auch (dh. JederSupplier
würde diese Eigenschaft hat, auch). - Ändern Sie eine
RelativeSource
verwenden Bindung zu erreichen, und verwenden Sie dieDataContext
des MutterItemsControl
.
Andere Tipps
Haben Sie einen Blick auf die MVVM Toolkit ... Es hat diese Idee eines Befehls refrence, die Sie verwenden können!
Erstellen Sie eine CommandRefrece als Ressource und dann benutzen Sie einfach die Static Markup Erweiterung ...
<c:CommandRefrence x:Key="EntitySelectedCommandRef" Command="{Binding EntitySelectedCommand}" />
und dann später können Sie
...Command="{StaticResource EntitySelectedCommandRef}" ...