Wpf中集合对象绑定所在ViewModel的属性

要将集合中的对象绑定到 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。

相关推荐
yantuguiguziPGJ1 小时前
WPF 联合 Web 开发调试流程梳理(基于 Microsoft.Web.WebView2)
前端·microsoft·wpf
Aevget1 小时前
DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(二)
.net·wpf·界面控件·devexpress·ui开发·数据网格
大美B端工场-B端系统美颜师7 小时前
工控软件开发选择难?Electron、Qt、WPF 对比
qt·electron·wpf
c#上位机9 小时前
MefBootstrapper在Prism引导程序中的使用
c#·wpf·prism
没有bug.的程序员1 天前
服务治理与 API 网关:微服务流量管理的艺术
java·分布式·微服务·架构·wpf
Brianna Home2 天前
【案例实战】鸿蒙分布式调度:跨设备协同实战
华为·wpf·harmonyos
c#上位机3 天前
wpf中Grid的MouseDown 事件无法触发的原因
c#·wpf
△曉風殘月〆3 天前
如何在WPF中实现ComboBox多选
wpf
csdn_aspnet3 天前
如何使用现有工具进行 .NET 8 迁移 Wpf
wpf·.net 8
123梦野3 天前
WPF——动画
wpf