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>
War es hilfreich?

Lösung

Ihr Verdacht ist richtig. Sie haben ein paar Optionen:

  1. Expose eine EntitySelectedCommand von Ihrem Kind View-Modell als auch (dh. Jeder Supplier würde diese Eigenschaft hat, auch).
  2. Ändern Sie eine RelativeSource verwenden Bindung zu erreichen, und verwenden Sie die DataContext des Mutter ItemsControl.

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}" ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top