2012-01-07 3 views
0

私はMVVMを使いこなしています。私はボタンにコマンドをバインドすることで、少しばかりのロードブロッキングを打ちました。私はいくつかのボタンをビュー(= UserControl)は、私が持っているオブジェクトのリストに基づいて生成されています。MVVMでコマンドバインディングスコープを指定する方法は?

私のコードは次のようになります。

(メインウィンドウ)

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="12,57,12,12" /> 

(ユーザーコントロール)

<ItemsControl ItemsSource="{Binding AllConnections}" Margin="0,34,0,0"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Button Content="{Binding Password}" Height="23" HorizontalAlignment="Left" Margin="114,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding Path=ConnectCommand}" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

しかしConnectCommandが呼び出されていないと私はXAMLが探しているからだと仮定これは、ViewModelsバインディングではなく、AllConnectionsバインディングで行われます。これをどのように指定するのですか?

+0

ボタンの内容は= "{バインドパスワード}" - 適切にバインドされ? – ieaglle

答えて

3

祖先を指定するには、相対ソースを使用する必要があります。このような何か:

Command = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=ViewModel.CommandToBind}" 
+1

私はそれが 'DataContext.CommandToBind'であるべきだと感じていますか? – Ankesh

+0

それは、ビュー上にdatacontextを設定する方法に依存します – ema

関連する問題