Это довольно просто , чтобы проверить, есть ли у определенного контейнера или его дочерних элементов ошибки проверки. Это можно использовать для отключения кнопки Сохранить .
Я могу использовать таймер
public SomeUserControl()
{
InitializeComponent();
var timer = new DispatcherTimer
{
Interval = TimeSpan.FromMilliseconds(100),
IsEnabled = true
};
Loaded += (s, e) => buttonSave.IsEnabled = IsValid(grid);
Unloaded += (s, e) => timer.Stop();
}
для опроса и отключения кнопки.
<!-- container with lots of controls, bindings and validations -->
<Grid x:Name="grid">
...
</Grid>
<!-- save button -->
<Button x:Name="buttonSave" ... />
Есть ли способ лучше? В идеале я хочу событие. К сожалению, единственное событие, которое я обнаружил, Validation.Error , может использоваться только для элемента с самими привязками. Просматривать дочерние элементы и подписываться (не говоря уже о том, что мне нужно для добавления новых дочерних элементов), гораздо хуже, чем опросить.
Мысли?