用户控件上的MVVM多重绑定

时间:2012-03-15 13:38:06

标签: wpf xaml binding mvvm

我有一个UserControl“SubjectListView”。绑定设置为“AllSubjects”,它是SubjectListViewModel中的ObservableCollection。它用于检索名称并执行命令。检索名称,但是也在SubjectListViewModel中的命令不在按钮上执行,而是在不在范围外动态创建的按钮上工作。

有解决方案吗?

<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 个答案:

答案 0 :(得分:2)

问题是,InvasionCommand在你的viewmodel中(我想是这样),但是你在ItemsSource的实际元素中..

为此,我使用ElementSpy,但我认为如果您使用RelativeSource,它将会起作用。

在这里,您可以概览所有可能的绑定:http://www.nbdtech.com/Free/WpfBinding.pdf

或者,如果您将StackPanel命名为Container,则可以绑定以下内容:

Binding ElementName=Container, Path=DataContext