关于mvvm的ComboBox绑定SelectedValue值不正确问题
我的自定义下拉对象
public class ComboBoxModel{//基础属性public int SelectedIndex { get; set; }public string SelectedValue { get; set; }//附加属性public string ImagePath { get; set; }public bool IsSelected { get; set; }//码表属性public int Id { get; set; }public int SortNumber { get; set; }public int NodeKey { get; set; }public string NodeCode { get; set; }public string NodeName { get; set; }//构造函数public ComboBoxModel(){SelectedIndex = 0;SelectedValue = null;}public ComboBoxModel(int index, string value){SelectedIndex = index;SelectedValue = value;}}
在viewModel中的绑定参数
public ObservableCollection<ComboBoxModel> CardType { get; set; }public ComboBoxModel CardTypeSelected { get; set; }
前端页面
<ComboBox Grid.Row="3" Grid.Column="4" VerticalAlignment="Center" VerticalContentAlignment="Center" ItemsSource="{Binding DataContent.CardType}"DisplayMemberPath="SelectedValue" SelectedValuePath="SelectedValue"SelectedIndex="{Binding DataContent.CardTypeSelected.SelectedIndex,Mode=TwoWay}"SelectedValue="{Binding DataContent.CardTypeSelected.SelectedValue,Mode=TwoWay}"
/>
我的ItemsSource绑定的是一个ComboBoxModel类型的对象列表,就是要告诉页面我的下拉菜单里每个选项是什么内容
ItemsSource="{Binding DataContent.CardType}"
这里ObservableCollection<ComboBoxModel>和List<ComboBoxModel>意义相同,但是在MVVM里前者可与页面绑定互动,所以尽量用前者
在这个对象列表中的每一个选项本身是一个ComboBoxModel类型,且有两个属性:
SelectedIndex
SelectedValue
所以我需要明确告诉前端页面我显示的路径是哪里,选中参数的存储路径又是哪里
DisplayMemberPath="SelectedValue" //显示成员的路径
SelectedValuePath="SelectedValue"//选中参数的路径
所以在指定这两项后,前端下拉菜单才能正确的显示ItemsSource的内容
如果不设置这两个路径,前端页面就不知道这个自定义ComboBoxModel对象究竟要显示什么,很大可能性你得到的一个结果就是一长串ComboBoxModel的类型描述字符串
然后就可以绑定具体的接收SelectedIndex和SelectedValue的参数了,例如:
SelectedIndex="{Binding DataContent.CardTypeSelected.SelectedIndex,Mode=TwoWay}"
SelectedValue="{Binding DataContent.CardTypeSelected.SelectedValue,Mode=TwoWay}"
因为设置了TwoWay,所以若你的上下文DataContent实现双工接口的情况下就可以在后端更新前端数据了
public class ShowDialogEmployeeModel : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;public void OnChangedProperties(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}
上面代码是DataContent的双工接口举例
关于mvvm的ComboBox绑定SelectedValue值不正确问题相关推荐
- combobox绑定数据
今天开发过程中遇到Combobox绑定数据的需求,研究了下绑定DataTable,现在Po上来,有时间研究下绑定其他类型的数据,到时候再来更新. 废话不多说,上代码: //清空一下绑定 m_Combo ...
- ListBox和ComboBox绑定数据简单例子
1. 将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容 //自定义了Person类(有Name,Age,Heigth等属性) List<Person> per ...
- Winform ComboBox 绑定
1. 需求 我有一个参数类(AxisPrm),需要与界面的ComboBox进行绑定,ComboBox下拉选项框有两个选项,分别是"是"和"否",当下拉选择&qu ...
- ComboBox绑定数据源时触发SelectedIndexChanged事件的处理办法
转载:http://hi.baidu.com/haoyun2012/item/d780ca157a29b239b9318080 感谢原作者 ComboBox最经常使用的事件就是SelectedInde ...
- RadGrid使用技巧:从RadGrid获取绑定的值
本文主要介绍从RadGrid获取绑定的值,仅适用于Telerik RadControls for asp.net ajax. 获取方式 RadGrid把绑定的值存储在VIewState中,即使View ...
- WinForm 中ComboBox 绑定总结
1. DataTable 用DataTable直接绑定,只需要设置DataSource.DisplayMember.ValueMember三个属性即可. Code this.cmbConsumeSup ...
- mvvm 自动绑定_ZK的实际应用:MVVM –表单绑定
mvvm 自动绑定 这是我们从头开始构建ZK应用程序的第二集. 上一篇文章介绍了使用MVVM将数据加载和呈现到表中. 在本文中,我们将向您介绍ZK MVVM的表单绑定. 目的 我们将构建一个" ...
- ZK的实际应用:MVVM –表单绑定
这是我们从头开始构建ZK应用程序的第二集. 上一篇文章涉及使用MVVM将数据加载和呈现到表中. 在本文中,我们将向您介绍ZK MVVM的表单绑定. 目的 我们将构建一个"添加"功能 ...
- Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令
目录 一.VueJS是什么? 二.Vue的优缺点 三.MVVM 数据双向绑定 四.Vue的安装和使用 五.Vue模板语法-文本渲染 六.常用的vue的指令 一.VueJS是什么? 它是一个轻量级MVV ...
最新文章
- C++库文件和头文件编写教程
- char [] 和 char * 区别
- Eclipse调试Java的10个技巧【转】
- mysql存储过程打不开了_请问mysql存储过程的问题,我找了几个例子一个都运行不起来,...
- 一个多线程和队列的实例演示
- keepalived实现nginx的高可用(双主模型)
- css清除浮动的原理
- “物联网”“云计算” IT业新概念风起云涌
- SVN图标不能正常显示
- Opera 设置微软雅黑字体显示!
- 彩影ARP防火墙 v6.0.2(x64)的问题 错误代码1/0 解决方案
- linux bsd格式,Linux系统日志管理_Linux/BSD系统
- Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本
- 可编辑div的一些方法总结(二)自定义空格和回车事件
- Android 10编译出错
- Java面试题 基本类型和包装类对象使用 == 和 equals进行比较的结果?
- 蜻蜓直播社交软件之蜻蜓s前端文件目录详解-开源系统蜻蜓s系统
- Python 提取音乐频谱并可视化
- python之Scapy 中文文档:三、使用方法
- hp进系统卡在w ndows界面,惠普电脑一直卡在正在启动windows怎么办
热门文章
- centos7时间同步
- 编写一个程序,用户输入某个大写字母,产生一个金字塔图案。例如用户输入字母 E,则产生如下图案:
- iphone安装360不成功,无限提示Mobilesubstrate 0.9.3998未安装的解决办法
- Linux input子系统分析
- vue小程序开发(一) uni-app基本学习
- 东华大学计算机学院推免生面试难吗,2020东华大学计算机保研夏令营经验
- 国产32位单片机有哪些
- 毕设 JAVA JSP 学生成绩分析管理系统sqlserver论文
- python 计算某段时间每日对数收益率,并设计一种指标进行交易,分析年化收益和夏普比率
- Arduino操作MPU6050模块