我有一个对话框,显示ObservableCollection(集合o int)的各个元素。当用户更改集合的各个值时,我想验证更改。
在我的虚拟机中,集合只有一个属性,我的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}" />
这是我的VM背后的一些代码。 grp_对象是Model
/// <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)
{...
答案 0 :(得分:2)
我不认为您的方法会起作用,因为为了使ValidatesOnDataError属性起作用,Binding的目标必须实现IDataErrorInfo。在您的场景中,ChannelNumber属性是目标,而不是ChannelNumberCollection本身,您的代码片段表明该集合实现了IDataErrorInfo。
我认为您需要:
或