WPF ItemsControl-ViewControlのコマンドがItemsControl内から起動しない
-
05-07-2019 - |
質問
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>
解決
あなたの疑いは正しい。いくつかのオプションがあります:
- 子ビューモデルから
EntitySelectedCommand
も公開します(つまり、各Supplier
にもこのプロパティがあります)。 - 親
ItemsControl
のDataContext
にアクセスして使用するには、RelativeSource
を使用するようにバインディングを変更します。
他のヒント
MVVM Toolkitをご覧ください ...使用できるコマンド参照の考え方があります!
リソースとしてCommandRefreceを作成し、StaticResourceマークアップ拡張機能を使用するだけです...
<c:CommandRefrence x:Key="EntitySelectedCommandRef" Command="{Binding EntitySelectedCommand}" />
そして後で使用できます
...Command="{StaticResource EntitySelectedCommandRef}" ...
所属していません StackOverflow