首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用绑定IDataErrorInfo UserControl但值相同时,在子ViewModel中获取要更新的OnPropertyChanged验证

是指在使用WPF(Windows Presentation Foundation)开发桌面应用程序时,当使用绑定机制将数据模型与用户界面控件进行绑定时,当数据模型中的属性值发生变化时,可以通过触发OnPropertyChanged事件来实现数据验证。

在WPF中,可以使用IDataErrorInfo接口来实现数据验证。该接口定义了两个属性:Error和Item。Error属性用于获取整个数据模型的验证错误信息,Item属性用于获取指定属性的验证错误信息。

当值相同时,即数据模型中的属性值没有发生变化时,如果需要在子ViewModel中获取要更新的OnPropertyChanged验证,可以通过以下步骤实现:

  1. 在子ViewModel中创建一个继承自IDataErrorInfo的属性,例如SelectedValue。
  2. 在该属性的get方法中,返回父ViewModel中的属性值,例如ParentViewModel.SelectedValue。
  3. 在该属性的set方法中,判断新值是否与旧值相同。如果相同,则不触发OnPropertyChanged事件;如果不同,则更新父ViewModel中的属性值,并触发OnPropertyChanged事件。
  4. 在子ViewModel中实现IDataErrorInfo接口,根据需要对SelectedValue属性进行验证,并返回相应的错误信息。
  5. 在用户界面控件中,将子ViewModel的SelectedValue属性与控件的绑定进行关联。

通过以上步骤,当值相同时,在子ViewModel中可以获取要更新的OnPropertyChanged验证,并进行相应的数据验证和错误信息返回。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议在腾讯云官方网站上查找相关产品和文档,以获取更详细的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF --- TextBox输入校验

引言 WPF应用程序开发,数据校验是确保用户输入数据正确性和完整性重要一环。...IDataErrorInfo IDataErrorInfo 是一个接口,Viewmodel 实现接口用于在后台,提供数据验证和错误信息。...IDataErrorInfo 主要作用域为后台 ViewModel该接口包含两个成员:Error 和 this[string columnName]。这两个成员允许你在数据绑定时提供验证错误信息。...小结 以上两种数据校验(IDataErrorInfo、ValidationRule)方式,均可以实现自定义数据校验,例如对数据格式、范围、逻辑等方面的验证,并在验证失败时提供相应反馈信息。...IDataErrorInfo适用于ViewModel做数据校验,可以做一些无法在前端页面做事情,比如出现异常值是还原为默认

44620

【愚公系列】2023年11月 WPF控件专题 Validation控件详解

IDataErrorInfo:这是一个接口,通过实现它,可以使绑定元素支持数据验证。...ValidatesOnDataErrors:指示在数据对象实现了IDataErrorInfo接口时是否进行验证。如果设置为true,则在数据对象实现中指定验证逻辑将自动应用。...UpdateSourceTrigger:指示何时应该更新源属性。可以设置为PropertyChanged、LostFocus或Explicit。...ViewModelUsername、Password和Email属性,并将UpdateSourceTrigger设置为PropertyChanged,这样每次用户输入内容时都会触发属性更新。...接下来,ViewModel定义这些属性和验证规则:public class RegisterViewModel : INotifyPropertyChanged, IDataErrorInfo{

41312
  • WPF --- TextBox输入校验

    引言WPF应用程序开发,数据校验是确保用户输入数据正确性和完整性重要一环。...接下来我们创建一个WPF应用程序,界面添加 TextBox,命名为”textbox1“,将文本绑定在 TestViewModel TestField1。...IDataErrorInfo 主要作用域为后台 ViewModel该接口包含两个成员:Error 和 this[string columnName]。这两个成员允许你在数据绑定时提供验证错误信息。...图片小结以上两种数据校验(IDataErrorInfo、ValidationRule)方式,均可以实现自定义数据校验,例如对数据格式、范围、逻辑等方面的验证,并在验证失败时提供相应反馈信息。...ValidationRule适用于ViewModel做数据校验,可以做一些无法在前端页面做事情,比如出现异常值是还原为默认

    68360

    FluentValidationC# WPF应用

    本文需要实现功能unsetunset 提供WPF界面输入验证,采用MVVM方式,需要以下功能: 能验证ViewModel定义基本数据类型属性:int\string等; 能验证ViewModel定义复杂属性...复杂属性:我遇到问题是,怎么验证ViewModel对象属性属性?...和属性都实现IDataErrorInfo接口,即可实现复杂属性验证,文章没有具体实现,灵感是从这来,就不具体说该链接代码了,有兴趣可以点击链接阅读,下面贴上代码。...,columnName表示表单项列名,就是ViewModel绑定属性名。...集合类 - Field 此类用作ViewModel集合项使用,模拟动态表单数据校验,简单包含4个属性:字段名称、字段显示名称、数据类型、数据,表单主要根据数据类型验证输入数据是否合法。

    17210

    WPF 表单验证之 INotifyDataErrorlnfo 接口使用示例

    三、问题现象 我们界面上构建一个加法计算功能,有两个输入框可以用于输入两个加数,右边显示计算结果,最右边是执行计算按钮,如下图: 两个加数和一个结果都使用可绑定属性;其中两个加数是完整属性形式...毫秒,最后才是计算: 演示如下(动图),正常计算没什么问题,如果将输入框内容清空,再进行计算,就可以看出不对地方了 —— 前台绑定失败了,所以后台不变,进而导致计算结果还是保持了上次状态,...四、实现验证接口 首先我们让绑定基类实现 INotifyDataErrorInfo 接口,实现该接口实现三个成员: 具体为,一个获取错误列表方法 GetErrors,一个指示是否存在错误属性 HasErrors...另外还重载了一个 GetErrors 方法,也是针对于同时处理几个属性场景,并且之前返回类型为 List,相当于只是把错误列表 key 去掉了,并没有整合,而我这个方法返回为 List...绑定时添加 ValidatesOnNotifyDataErrors=True : 实际上,按照《宝典》说法,这也可以不加,因为默认就是 true,不过为了明确起见还是加上比较好: 然后是需要验证属性

    91910

    Silverlight:双向绑定综合应用-多集合依赖绑定

    这是上一篇“Silverlight:双向绑定综合应用-自动更新集合汇总字段”续篇。需求场景如下: 一个公司,有N个员工,逢年过节时搞一些抽奖活动,最终要公告收奖名单。...”必须从公司员工中选取,如果发现某位员工公司员工库里没有登记,也可以在这个界面上员工列表临时添加。...即:下面网格员工“姓名下拉框”数据来源,依赖于上面网格员工姓名记录。...(类似数据库主从表关系) 为了实现这种绑定,需要创建二个ViewModel类 EmployeePrizeViewModel类,用来实现下面一个网格绑定,代码如下: using System.ComponentModel...PropertyChangedEventHandler(item_PropertyChanged); } } /// /// 员工属性变化时自动调用本方法

    86860

    C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码

    嗯..前面3篇就是基础内容..后面就开始逐渐加深了,进阶篇开始了. 今天学习内容? 今天我们讲讲XamarinMVVM双向绑定,嗯..需要有一定MVVM基础....他包含一个PropertyChanged,属性变更事件,我们需要在每个属性变更时候(也就是Set),调用具体开发过程,如果你需要使用MVVM那么你所有的ViewModel都应该继承它....我们创建三个数值,他们与控件Slider来绑定,并控制.更新同时,求和.得到NumSun. 界面,我们有一个清空Button来清除这个ViewModel....然后就一一对应xaml绑定了相关属性.所有的Slider绑定中都有个Mode=TwoWay,意思就是,这个属性为双向绑定,控件变更它同时,也会在ViewModel变更....先解释一下,为什么会有命令绑定这个东西,因为我们使用双向绑定时候,页面的点击事件,并不能直接调用ViewModel,所以就衍生了一个叫命令绑定东西.来和我们控件各种事件相关联.

    1.6K100

    【我们一起写框架】MVVMWPF框架之序篇(一)

    前言 我想,有一部分程序员应该是二三线城市,虽然不知道占比,想来应该不在少数。 我是这部分人群一份。 我们这群人,面对客户,大多是国内中小企业,或者政府小部门。...好坏就另说了,所以写框架这件事还是与经验挂钩认知,技术视野相对更高,技术范围更广的人写框架会更好。所以,我认为,[实战]架构师和高级程序员,本质上没有区别,都是程序员。...ViewModel:每个WPF页面有唯一ViewModel,用来处理页面业务逻辑。 Utility:存放一些常规处理类。 DTO:存放数据传输用实体类。 Proxy:获取数据用代理类。...WPF项目中创建WindowMain窗体,并在VM创建对应ViewModel。...Page和UserControl是被Window使用,不能直接呈现,所以,使用Page和UserControl之前,我们需要编写MVVM框架,用于WPF页面和ViewModel传递信息Command

    2.1K30

    WPF应用中一种比较完美的权限控制设计方式

    如题近段时间 需要在wpf应用设计一个权限控制 , 简而言之说 你懂 对于IT人员来说都知道 常见软件功能 首先要有用户 用户,然后用户属于哪个角色 ,然后各个角色都有自己可供操作一堆功能...为了绑定功能标识传入参数 ,于是我们首先想到从 source入手 让其定位到一个static东西 好处有二 ,首先static 一个地方统一编写就行了统一引用 维护方便不易出错,第二个有编辑提示...binding不都是动态吗 我们此处却都是一个固定 这感觉怪怪,不要怪。...测试发现界面一直没有更新置灰 ,最后我们跟踪发现原来是usercontrol一出现时候 就通过converter完成了binding ,而这时候其实我们还没有登录,而converter又是一个很特殊玩意儿...我们是无法代码手动去触发他,通过复习binding过程 推断 还是只得从本身出发 , 这样converter就会触发了,去更新这个"其实是一直不变" 是不是一种很诡异感觉 哈哈哈哈哈哈。。

    1.4K30

    【我们一起写框架】MVVMWPF框架(三)—数据控件

    DataControl—数据控件 上文我们已经编写出来了WPFMVVM基础框架,为了让他更加强壮,为了让他多坚持一阵子再粉碎,我们要让ViewModel更强壮,所以我们编写[数据控件]。...定义了ChangeTextBox属性,然后再Xaml绑定了ChangeTextBox属性Text到UI控件TextBoxText属性上,这样我们就实现了数据联动。...因为WPFUI控件被创建以后,要被添加到视觉树,所以最终会被显示屏幕上是包裹着控件视觉树;其中视觉树与控件是可以分离;比如控件绑定数据是10行,而视觉树可以显示3行。...[有兴趣同学可以自行了解下ICollectionView类型] 感觉这样描述还是很难理解,让我们一起应用慢慢理解吧。...ComboBox应用 应用之前,我们先在Proxy建立一个获取数据是代理。 ?

    2.4K30

    win10 uwp 商业游戏 1.1.5 商店可以卖出数多个游戏修炼游戏相关文章

    中间 ListView 就来绑定按钮,绑定按钮参见:win10 UWP ListView 添加列表 如果需要绑定ListView ,需要先创建一个类型,这个类型直接包括显示文字和跳转页面等,这里先显示文字...= ViewModel; 这样就可以点击新建游戏时候看到跳转到市场 ?...LUK幸运 悟性 国产游戏找到属性 气血——角色当前生命/角色当前生命上限/角色总生命上限,气血为0时角色死亡 法力——角色当前法力/角色当前法力上限/角色总法力上限,施放技能需要消耗法力...,但是可以看到,界面绑定没有刷新,因为之前写属性都是没有通知,所以界面的属性都没有刷新,为了让界面可以刷新,所以需要修改属性 class TdsumTzwok : NotifyProperty...(); } } } 实际上人物属性可以不做设置,因为可以通过更新人物属性来更新

    2.7K00

    win10 uwp 异步进度条 圆形进度条

    ,异步绑定很简单,参见绑定文章。...我使用一个ProgressBar 需要设置他各个,如果不设置,一般最大为100,最小为0,所以可以表示百分数,其中Value是double,绑定后台就好。...首先我们需要有Thickness,宽度,StrokeDashArray每一个都是宽度倍数 首先取第一个元素,把这个元素乘以宽度,作为显示大小,然后取第二个元素,乘以宽度,作为不显示大小 然后循环获取第三个...(总长度100 - 宽度3) \* PI / 宽度3 因为我们需要算我们宽度不是直接总长度,是总长度-宽度 第二个最好是Double.Max 我们想要一个可以用户进度,那么可以绑定一个属性,我们控件...我们需要这个为double,然后绑定 因为我们需要两个,所以转换 假如我们转换是固定总长度,宽度,那么可以使用 public object Convert(object value

    1.6K10

    Android DataBinding & MVVM

    MVVM View View层只负责UI相关工作,不进行逻辑处理,并且不需要在Activity/Fragment更新UI操作,更新UI通过Binding实现,ViewModel更新数据源即可...ViewModel ViewModel层只做和逻辑处理相关工作,ViewModel不会持有View层引用,双方通过Binding方式通信,只需要在ViewModel层对数据进行操作,View层就会自动更新...层获取到数据之后,方便更新数据源,其中操作也可以放在ViewModel中进行处理。...LifecycleProvide和Binding实例,调用BindinsetExpressViewModel方法将ViewModel层与View层进行绑定。..." /> 定义变量expressViewModel,会在Binding中生成对应set方法,就是我们ViewModel构造方法调用

    1.1K21

    win10 uwp 异步进度条

    ,异步绑定很简单,参见绑定文章。...我使用一个ProgressBar 需要设置他各个,如果不设置,一般最大为100,最小为0,所以可以表示百分数,其中Value是double,绑定后台就好。...(总长度100 - 宽度3) \* PI / 宽度3 因为我们需要算我们宽度不是直接总长度,是总长度-宽度 第二个最好是Double.Max 我们想要一个可以用户进度,那么可以绑定一个属性,我们控件...我们需要这个为double,然后绑定 因为我们需要两个,所以转换 假如我们转换是固定总长度,宽度,那么可以使用 public object Convert(object value.../View/RountProgress.xaml 那么进度条如果不需要进度,那么我有一些好,例如我之前博客有说,还有一个简单,也是上面改,我们一个是显示一个是不显示,那么我们可以做 <UserControl

    43010

    WPF 绑定表达式添加计算

    很多时候一些简单使用绑定需要对绑定源做处理就需要通过转换器,这样代码写起来不好看 本文告诉大家通过一个简单库可以实现在界面绑定时候通过表达式不需要转换 首先通过 Nuget 安装 CalcBinding...Invoke(this, new PropertyChangedEventArgs(propertyName)); } } 这时界面如果需要创建一个 TextBlock 绑定三个...-- wrong --> 可以绑定静态,静态写法 xmlNamespace:Class.StaticProperty.NestedProperty 命名空间下静态属性属性 对于经常计算这里也可以简单使用...,同时有更好阅读体验。...欢迎转载、使用、重新发布,务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

    5K10

    Silverlight Telerik控件学习:数据录入、数据验证

    数据录入不规范(或错误)就象一颗定时炸弹,迟早会给系统带来麻烦,所以在数据录入时做好验证是很有必要。...相对传统asp.net开发而言,SL4数据验证轻松很多(主要得益于XamlBinding特性),步骤如下: 1、定义业务Model类时,需要验证属性setter,写好业务逻辑,对于不合规范...同时切记Model类实现INotifyPropertyChanged接口,同时每个setter方法最后,显示调用OnPropertyChanged方法 比如,我们要做一个会员注册填写资料Form...小时", MaximumRangeSpan); throw new Exception(message); } } } 注:因为Sl数据验证实际上是通过抛异常将提示信息扔到前端...,这会导致调试时vs.net不断被异常信息所打断,这个有点烦人,所以我用了#define/#undef/#if /#endif 条件编译小技巧,调试期先不处理异常,等其它业务逻辑写完后,最后再加上

    3K60

    .NET控件Designer架构设计

    ViewModel和Model关系是,ViewModel操纵Model,同时监测Model变化,和Model同步。...ViewModel一定是DependencyObject,或者实现了INotifyPropertyChanged接口,所以当ViewModel属性变化后,View通过绑定会让展现和数据保持一致,输出过程就完成了...处理这个Slider对Model改变,最简单做法就是把Slider双向绑定到对应Adorner ViewModel某个属性,即使不能用双向绑定,也可以通过Behavior模式调用对应ViewModel...它会调用ViewModel什么Command呢?CellView需要先判断用户意图,这个判断比较有难度。...CellView(UserControl),所以我们会在这两个UserControlXaml设置一个附加属性ViewProperties.ViewModel,把它绑定到DataContext上,这样就让

    96050
    领券