我正在使用M-V-VM并在我的ViewModel上有一个名为'EntitySelectedCommand'的命令。

我试图获取ItemsControl中的所有Items来触发此命令,但是它无效。

我认为这是因为每个项目的“datacontext”是项目绑定的单个对象,而不是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>
有帮助吗?

解决方案

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

  1. 也会从您的子视图模型中公开 EntitySelectedCommand (即每个 Supplier 也会拥有此属性)。
  2. 更改绑定以使用 RelativeSource 来伸出并使用父 ItemsControl DataContext

其他提示

查看 MVVM Toolkit ...它有一个你可以使用的命令参考的想法!

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

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

然后你可以使用

...Command="{StaticResource EntitySelectedCommandRef}" ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top