У меня есть форма с некоторыми проверками, установленными в классе метаданных сущности.и затем привязка экземпляра объекта к пользовательскому интерфейсу с помощью VM.Примерно так:
Xaml вроде:
<Grid x:Name="LayoutRoot">
<StackPanel VerticalAlignment="Top">
<input:ValidationSummary />
</StackPanel>
<TextBox Text="{Binding Name, Mode=TwoWay}" />
<ComboBox x:Name="xTest" ItemsSource="{Binding MyList}"
SelectedItem="{Binding MyItem,Mode=TwoWay,
DisplayMemberPath="MyName"
ValidatesOnDataErrors=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True,
NotifyOnValidationError=True,UpdateSourceTrigger=Explicit}" />
</Grid>
Кодовый код вроде:
public MyForm()
{
InitializeComponent();
this.xTest.BindingValidationError +=new EventHandler<ValidationErrorEventArgs>((s,e)=>{
BindingExpression be = this.xTest.GetBindingExpression(ComboBox.SelectedItemProperty);
be.UpdateSource();
if (e.Action == ValidationErrorEventAction.Added)
((ComboBox)s).Foreground = new SolidColorBrush(Colors.Red);
});
}
Метаданные типа:
[Required]
public string Name { get; set; }
[RequiredAttribute]
public int MyItemID { get; set; }
Но когдаЗапустив приложение, я не получил ничего отображения в ValudationSummary.Для CombBox, даже если есть ошибка, похоже, что событие BindingValidationError никогда не запускается.Как это решить?