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。

相关推荐
执笔论英雄12 小时前
【大模型推理】VLLM 引擎使用
wpf·vllm
LateFrames12 小时前
动画性能比对:WPF / WinUI3 / WebView2
wpf·webview·用户体验·winui3
阿湯哥1 天前
多智能体架构深度解析:企业落地如何选择Skills与SubAgents?
架构·wpf
源之缘-OFD先行者1 天前
自研 WPF 鸟情图表:性能与灵活的双重突破
wpf
Moqiqiuzi1 天前
WPF单实例启动
wpf
Moqiqiuzi1 天前
WPF程序打包成安装包的方法
wpf
码农水水2 天前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
码农水水2 天前
京东Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·分布式·http·面试·php·wpf
闻缺陷则喜何志丹3 天前
【C# WPF】TextBox的数据绑定
ui·c#·wpf·mvvm·数据绑定·textbox
码农水水3 天前
得物Java面试被问:大规模数据的分布式排序和聚合
java·开发语言·spring boot·分布式·面试·php·wpf