WPF中ComboBox控件的SelectedItem和SelectedValue的MVVM绑定

问题描述:左侧是一个ListView控件,用于显示User类的Name属性,右侧显示其SelectedItem的其他属性,包括Age, Address,和Category。其中Category用ComboBox表示。在下拉框选中其他category,可以更改User的属性值。

 

 

 

 

 

 如果Category是string类型,即User类的定义如下

复制代码
public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string category { get; set; }
        public string Address { get; set; }
    }
User Class
复制代码

那么,combobox的绑定代码如下:

<ComboBox Width="150" Canvas.Left="80" ItemsSource="{Binding Path=Categories}" 
                          SelectedItem="{Binding ElementName=listview, Path=SelectedItem.category, Mode=TwoWay}" Name="cbotypes"/>

直接绑定到了SelectedItem属性。

如果Category是个复合类型,即User类和Category类定义如下:

复制代码
public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public  Category category { get; set; }
        public string Address { get; set; }
    }

    public class Category
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
Category&User class
复制代码

那么,combobox的绑定代码如下:

<ComboBox Width="150" Canvas.Left="80" ItemsSource="{Binding Path=Categories}" DisplayMemberPath="Name"
                          SelectedItem="{Binding ElementName=listview, Path=SelectedItem.category, Mode=TwoWay}" SelectedValuePath="Name" 
                          SelectedValue="{Binding ElementName=listview, Path=SelectedItem.category.Name}" Name="cbotypes"/>

使用DisplayMemberPath指定了绑定到Category类中的Name属性,并使用了SelectedValue和SelectedValuePath绑定到具体的SelctedItem.

posted @   南风小斯  阅读(6985)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示