如何解决如何使ObservableCollection与IDataError一起使用
| 我有一个对话框,显示一个ObservableCollection(一个int集合)的各个元素。当用户更改集合的各个值时,我想验证更改。 在我的VM中,集合只有一个属性,而我的XAML绑定到各个元素。 那么,当集合中的项发生更改时,如何获取验证属性索引器? 我对WPF还是很陌生,所以我想到有一个简单的解决方案。 感谢您的帮助。 这是XAML。 10个频道中的每个频道都有一个等效的文本框 <TextBox Grid.Row=\"0\" Grid.Column=\"1\" Name=\"chan01\"
HorizontalAlignment=\"Left\" Width=\"60\"
Text=\"{Binding ChannelList[0].ChannelNumber,ValidatesOnDataErrors=True,UpdateSourceTrigger=PropertyChanged,NotifyOnValidationError=True}\" />
这是虚拟机中的一些代码。 grp_对象是模型
/// <summary>
/// Scan channel list.
/// </summary>
public ChannelNumberCollection ChannelList
{
get
{
return grp_.ChannelList;
}
set
{
grp_.ChannelList = value; NotifyPropertyChanged(\"ChannelList\");
}
}
public string this[string propertyName]
{
get
{
switch (propertyName)
{...
解决方法
我认为您的方法不会起作用,因为为了使ValidatesOnDataError属性起作用,绑定的目标必须实现IDataErrorInfo。在您的方案中,ChannelNumber属性是目标,而不是ChannelNumberCollection本身,并且您的代码段指示该集合实现了IDataErrorInfo。
我认为您要么需要:
确保ChannelNumberCollection中的每个项目都实现IDataErrorInfo(我的建议)
要么
创建一个ValidationRule,可以将其添加到ChannelNumber绑定的Binding.ValidationRules属性中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。