6

我正在使用 MV-VM 并在我的 ViewModel 上有一个名为“EntitySelectedCommand”的命令。

我试图让 ItemsControl 中的所有项目来触发这个命令,但是它不起作用。

我认为这是因为每个项目的“数据上下文”都是项目绑定到的单个对象,而不是 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>
4

2 回答 2

13

你的怀疑是正确的。你有几个选择:

  1. 也从您的子视图模型中公开一个EntitySelectedCommand(即,每个视图模型也Supplier将具有此属性)。
  2. 更改您的绑定以使用 aRelativeSource来联系并使用DataContextparent ItemsControl
于 2009-09-11T11:46:37.150 回答
2

看看MVVM Toolkit ...它有一个可以使用的命令引用的想法!

创建一个 CommandRefrece 作为资源,然后使用 StaticResource 标记扩展...

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

然后你可以使用

...Command="{StaticResource EntitySelectedCommandRef}" ...
于 2009-09-11T11:55:30.827 回答