首页
学习
活动
专区
工具
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做数据校验,可以做一些无法在前端页面做的事情,比如出现异常值是还原为默认值。

48920

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

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

45012
  • WPF --- TextBox的输入校验

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

    72560

    FluentValidation在C# WPF中的应用

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

    19110

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

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

    94410

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

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

    87660

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

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

    1.7K100

    MVVM中实现 INotifyPropertyChanged 的 4 种方法

    在 MVVM 框架中,它确保 ViewModel 属性的更改自动反映在 View 中。这种自动同步消除了在底层数据更改时手动更新 UI 的需要,从而降低了复杂性和出错的可能性。...在 XAML 中,使用绑定 在基于 XAML 的应用程序(如 WPF 或 UWP)中,您可以将 UI 元素绑定到实现 .这允许 UI 在基础属性值更改时自动更新。...简单的属性 假设我们想向类中添加 and 属性。在每个属性的 setter 中,我们应该检查新值是否与当前值不同,以防止不必要的通知。如果是,则更新支持字段并调用 ,传递属性的名称。...这可确保在发生任何更改时立即更新任何绑定的 UI 元素。...当子属性的值发生更改时(例如,在实例中),父对象 () 不会收到对象属性发生更改的通知,这会阻止 UI 按预期更新。

    39710

    【我们一起写框架】MVVM的WPF框架之序篇(一)

    前言 我想,有一部分程序员应该是在二三线城市的,虽然不知道占比,但想来应该不在少数。 我是这部分人群中的一份子。 我们这群人,面对的客户,大多是国内中小企业,或者政府的小部门。...但写的好坏就另说了,所以写框架这件事还是与经验挂钩的。 在我的认知中,技术视野相对更高,技术范围更广的人写的框架会更好。所以,我认为,[实战]架构师和高级程序员,在本质上没有区别,都是程序员。...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.5K30

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

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

    2.4K30

    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的实例,调用Bindin的setExpressViewModel方法将ViewModel层与View层进行绑定。..." /> 定义变量expressViewModel,会在Binding中生成对应的set方法,就是我们在ViewModel的构造方法中调用的

    1.1K21

    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,绑定后台就好。...(总长度100 - 宽度3) \* PI / 宽度3 因为我们需要算我们的宽度不是直接总长度,是总长度-宽度 第二个最好是Double.Max 我们想要一个可以用户进度,那么可以绑定一个属性,在我们控件...我们需要这个为double,然后绑定 因为我们需要两个值,所以转换 假如我们的转换是固定的总长度,宽度,那么可以使用 public object Convert(object value.../View/RountProgress.xaml 那么进度条如果不需要进度,那么我有一些好的,例如我之前的博客有说的,还有一个简单,也是上面改,我们一个值是显示一个值是不显示,那么我们可以做 UserControl

    43210

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

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

    3K60

    WPF 在绑定表达式添加计算

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

    5.1K10
    领券