2009-09-11 5 views
6

内から発射ません。WPFのItemsControl - のViewModelのコマンドは、私はM-V-VMを使用し、「EntitySelectedCommand」と呼ばれる私のViewModelのコマンドを持ってるのItemsControl

私は、このコマンドを発射するの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> 

答えて

13

あなたの疑いが正しいです。

  1. は(。すなわち、各Supplierはあまりにも、この性質を持っているでしょう)だけでなく、あなたの子供のビューモデルからEntitySelectedCommandを公開:あなたはオプションのカップルを持っています。
  2. あなたが手を差し伸べると、親ItemsControlDataContextを使用するRelativeSourceを使用するバインディング変更します。
+3

優れ、多くのおかげで使用することができますが - それはRelativeSourceで作業しましたあなたが示唆したように... EntitySelected = "{バインディングRelativeSource = {RelativeSource FindAncestor、AncestorType = {X:タイプのItemsControl}}、パス= DataContext.EntitySelectedCommand}" –

2

MVVM Toolkitを参照してください...これはあなたが使用できるコマンドリファレンスのこのアイデアを持っています!

リソースとしてCommandRefreceを作成し、ちょうどStaticResourceのマークアップ拡張機能を使用して...

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

し、後であなたが

...Command="{StaticResource EntitySelectedCommandRef}" ... 
関連する問題