要将集合中的对象绑定到 ViewModel 中的 Command,可以使用 ItemContainerStyle 和 Button 的 Command 属性来实现。
下面是一个示例,假设你有一个 ViewModel 类,其中有一个名为 Items 的可绑定集合属性,该集合包含多个 Item 对象。ViewModel 中还有一个名为 ButtonCommand 的命令属性。
csharp
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Button Content="Button" Command="{Binding DataContext.ButtonCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" CommandParameter="{Binding}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
在上面的示例中,我们使用 ItemContainerStyle 来自定义每个列表项的外观,使用 Button 元素来表示按钮。在按钮的 Command 属性中,我们使用了 RelativeSource 来找到 ListBox 的 DataContext(即 ViewModel),并将其中的 ButtonCommand 属性绑定为按钮的命令。CommandParameter 属性绑定了当前列表项的数据对象,这样在执行命令时可以传递该对象作为参数。
确保你在 MainWindow 的代码中正确设置 ViewModel,并在其中设置 Items 和 ButtonCommand 属性。同时,还需要实现 ButtonCommand 的逻辑。
这样,当你运行程序时,会为每个列表项生成一个按钮,并且按钮点击时会触发 ViewModel 中的 Command。