// псевдокод
public enum ControlProperties
{
Name, Description, Foo, Bar
}
class CustomControl: Control: IDataErrorInfo
{
public string Name { get; set; }
public string Description { get; set; }
public string Foo { get; set; }
public string Bar { get; set; }
public ControlProperties ValidProperties { get; set; }
// ...
}
В шаблоне контрола:
{Binding Path=Name, RelativeSource={RelativeSource TemplatedParent}, ValidatesOnDataErrors=True}
Задача: обновить Validation.HasError (и, соответственно, вывод ошибок валидации) при изменении ValidProperties.
Доп условие: без обхода visual tree и поиска BindingExpression
Единственный
найденный воркараунд:
protected CustomControl Self { get; set; }
protected event EventHandler SelfChanged
{Binding Path=Self.Name, RelativeSource={RelativeSource TemplatedParent}, ValidatesOnDataErrors=True}
И эти люди борются за звание дома высокой культуры быта! (с)