Здравствуйте, UberPsychoSvin, Вы писали:
UPS>Влепил костылище, в CanExecute команды кнопки.
UPS>UPS>public static bool HasValidationErrors(this DependencyObject parent)
UPS>{
UPS>}
UPS>
Я делаю через BindingGroup:
<Window.BindingGroup>
<BindingGroup NotifyOnValidationError="True"/>
</Window.BindingGroup>
protected override void OnButtonClick(object selectedItem, CancelEventArgs args)
{
TaskDialogButtonData buttonData = selectedItem as TaskDialogButtonData;
if (buttonData != null)
{
if (buttonData.Button == TaskDialogButtons.OK)
{
BindingGroup bindingGroup = this.BindingGroup;
if (bindingGroup != null)
{
bool isValid = bindingGroup.ValidateWithoutUpdate();
foreach (BindingExpression expression in bindingGroup.BindingExpressions)
{
Binding binding = expression.ParentBinding;
if (binding.ValidationRules.Count > 0 || binding.ValidatesOnDataErrors)
{
expression.UpdateSource();
}
if (expression.HasError)
{
isValid = false;
}
}
args.Cancel = !isValid;
}
}
}
}
Только обратите внимание, что при использовании BindingGroup, необходимо для всех Binding в группе задать UpdateSourceTrigger. Иначе будет использоваться стандартный Explicit.