2012-03-15 53 views
1

我有一個UserControl「SubjectListView」。綁定設置爲「AllSubjects」,它是SubjectListViewModel中的ObservableCollection。它用於檢索名稱並執行命令。該名稱被檢索,但是也在SubjectListViewModel中的命令不在該按鈕上執行,而是在不在該範圍之外動態創建的按鈕上工作。用戶控件上的MVVM多重綁定

有沒有解決方案?

<StackPanel> 
    <ItemsControl ItemsSource="{Binding AllSubjects}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Button Width="100" Content="{Binding Name}" <!-- Is working--> 
        Command="{Binding InvasionCommand}" <!--Is NOT working--> /> 
       </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
    <Button Content="Check for Invasion" Width="120" Command="{Binding InvasionCommand}" <!-- Is working-->/> 
</StackPanel> 
+1

給你最外面的StackPanel一個'x:Name'。在你的命令綁定,使用'ElementName'指向命名的'StackPanel',然後做'Path = DataContext.InvasionCommand' – 2012-03-15 13:57:32

+0

@jberger感謝它正在工作:) – Spalatum 2012-03-15 14:12:06

回答

2

的問題是,InvasionCommand是您的視圖模型(我這麼認爲),但你在你的ItemsSource的實際元素是..

對於這一點,我用ElementSpy,但我認爲它會工作,如果你使用的RelativeSource ..

這裏有所有可能的綁定的概述:http://www.nbdtech.com/Free/WpfBinding.pdf

或者,如果你給你的StackPanel名稱Container,你可以跟着綁定ing:

Binding ElementName=Container, Path=DataContext

+0

謝謝我設置StackPanel並設置ElementName,它是現在工作。 – Spalatum 2012-03-15 14:11:13