首页 新闻 会员 周边 捐助

WPF数据绑定及验证的问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2009-12-31 11:00

我学习数据绑定不久,有问题请教高手:

我知道验证机制是在输入数据不合规则的时候提示用户并且放弃绑定,比如要求的数据是50-100,输入10或111就触发提示。

现在我不希望这样的处理方式,而希望系统自动修正输入内容,再将修正过的输入绑定。比如我输入小于50的数就修正成50,输入大于100的数就修正成100,并且将修正后符合规则的输入写入属性,该如何做?(50和100这样的数不是固定值,是根据程序要求改变的;同时还要有将"01"修正成"1"的功能)谢谢。

问题补充: 我自己部分解决了-_-是在数据类中写好验证逻辑,再在TextChanged事件中进行UpdateTarget强制更新……不过我还是更期待能够从绑定本身来解决这个问题,减少一个TextChanged事件的处理。如果有前辈能指出这样的方法我仍旧采纳答案,谢谢。
孔雀的主页 孔雀 | 初学一级 | 园豆:49
提问于:2009-12-16 15:58
< >
分享
所有回答(1)
0

不清楚是不是设置Binding 的 Mode 属性为TwoWay,然后在IValueConverter的ConvertBack里面做相关逻辑??

颜昌钢 | 园豆:150 (初学一级) | 2009-12-16 16:43
该方案试过,不行。 据我推测数据绑定有这样一种机制,数据更新绝不回传,所以由绑定目标属性改变引起的绑定源属性改变,不会再传回绑定目标属性,所以ConvertBack根本就执行不到。我发现甚至连OnPropertyChanged事件都给我忽略了
支持(0) 反对(0) 孔雀 | 园豆:49 (初学一级) | 2009-12-16 16:57
<TextBox Grid.Row="3" Grid.Column="1" Name="Txt_aa" Text="{Binding Path=aa}"/> public class AA:INotifyPropertyChanged { private int _aa; public int aa { get { return -aa; } set { if(value<50) { -aa=50; } else { _aa=100; } OnPropertyChanged("aa"); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(String info) { PropertyChangedEventHandler handler = PropertyChanged; if (handler !=null) { handler(this, new PropertyChangedEventArgs(info)); } } }
支持(0) 反对(0) 颜昌钢 | 园豆:150 (初学一级) | 2009-12-16 17:16
可以在属性的Set里面实现逻辑。。
支持(0) 反对(0) 颜昌钢 | 园豆:150 (初学一级) | 2009-12-16 17:20
我的意思是当Txt_aa.Text改变时,AA.aa会跟着改变,但这个改变并不会再反馈到Txt_aa.Text,不管在Set里面写什么都不行
支持(0) 反对(0) 孔雀 | 园豆:49 (初学一级) | 2009-12-17 09:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册