当前位置: 首页 > 编程语言 > C#

触发PropertyChanged时,WPF依赖项属性设置器不会触发,但源值不会更改分享

时间:2023-04-10 22:36:14 C#

C#学习教程:触发PropertyChanged时,WPF依赖属性setter不会触发,但source值不会改变自定义文本框上有一个int依赖属性,其中包含一个支持值。它绑定到一个整数?DataContext上的属性。如果我在DataContext中引发PropertyChanged事件,并且源属性的值未更改(保持为null),则不会触发依赖属性的设置器。这是一个问题,因为我想更新PropertyChanged上的自定义文本框(清除文本),即使源属性保持不变。但是,我还没有找到任何绑定选项来执行我想要的操作(有一个UpdateSourceTrigger属性,但我想在这里更新目标,而不是源)。也许有更好的方法来通知文本框需要清除其文本,我愿意接受任何建议。来源,按要求(简化)DataContext(来源):privateint?_foo;公共诠释?Foo{get{//绑定有效,因为_foo已被检索(在此处打??断点)。//RaisePropertyChanged("Foo")从别处调用,即使_foo的值没有改变return_foo;}set{//在用户输入时命中断点,因此绑定有效_foo=value;RaisePropertyChanged("富");}}自定义文本框(目标):publicdouble?值{得到{返回(双?)GetValue(ValueProperty);}set{//当Foo为null且Value也为null时,这里不打断点SetValue(ValueProperty,value);//当Value设置为null时,这段代码需要运行if(value==null&&!String.IsNullOrEmpty(Text)){Text=String.Empty;}}}publicstaticreadonlyDependencyPropertyValueProperty=DependencyProperty.Register("Value",typeof(double?),typeof(CustomTextbox),newPropertyMetadata(null,ValueChangedHandler));私有静态无效ValueChangedHandler(DependencyObjectdependencyObject,DependencyPropertyChangedEventArgse){//当Foo为null且Value也为null时,这里不打断点}XAML会直接调用SetValue而不是调用propertysetter具体我不记得了,但是我刚遇到遇到类似的问题。您不应在值的设置器中放置任何逻辑,而应在依赖属性更改时定义回调,并从那里更新值。以上为C#学习教程:触发PropertyChanged时,不会触发WPF依赖属性setter,但source值不会改变整个分享内容。如果对大家有用,需要进一步了解C#学习教程,还望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: