質問

M-V-VMを使用しており、ViewModelに「EntitySelectedCommand」というコマンドがあります。

ItemsControlのすべてのアイテムを取得してこのコマンドを実行しようとしていますが、機能していません。

「datacontext」の各アイテムは、ViewModelではなく、アイテムがバインドされている個々のオブジェクトであるためだと思いますか?

誰かが私を正しい方向に向けてくれますか?

乾杯、

アンディ

<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>
役に立ちましたか?

解決

あなたの疑いは正しい。いくつかのオプションがあります:

  1. 子ビューモデルから EntitySelectedCommand も公開します(つまり、各 Supplier にもこのプロパティがあります)。
  2. ItemsControl DataContext にアクセスして使用するには、 RelativeSource を使用するようにバインディングを変更します。

他のヒント

MVVM Toolkitをご覧ください ...使用できるコマンド参照の考え方があります!

リソースとしてCommandRefreceを作成し、StaticResourceマークアップ拡張機能を使用するだけです...

<c:CommandRefrence x:Key="EntitySelectedCommandRef" Command="{Binding EntitySelectedCommand}" />

そして後で使用できます

...Command="{StaticResource EntitySelectedCommandRef}" ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top