我有一个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>
答案 0 :(得分:2)
问题是,InvasionCommand
在你的viewmodel中(我想是这样),但是你在ItemsSource的实际元素中..
为此,我使用ElementSpy
,但我认为如果您使用RelativeSource,它将会起作用。
在这里,您可以概览所有可能的绑定:http://www.nbdtech.com/Free/WpfBinding.pdf
或者,如果您将StackPanel命名为Container
,则可以绑定以下内容:
Binding ElementName=Container, Path=DataContext