У меня есть пользовательский элемент управления, который переопределяет Window:
public class Window : System.Windows.Window
{
static Window()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Window), new System.Windows.FrameworkPropertyMetadata(typeof(Window)));
}
...
}
Он также имеет стиль:
<Style TargetType="{x:Type Controls:Window}" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="WindowStyle"
Value="None" />
<Setter Property="Padding"
Value="5" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:Window}">
...
К сожалению, это нарушает распространение Validation.ErrorEvent для содержимого моего окна. То есть мое окно может получать событие просто отлично, но я не знаю, что с ним делать, чтобы имитировать, как стандартное окно (или кто-то другой) имеет дело с ним.
Если проверяющие элементы управления размещены в стандартном окне, они работают. Они также работают, если я просто выполняю вызов OverrideMetadata (оставляя их внутри моего пользовательского окна). Они также работают, если я оставляю вызов OverrideMetadata, но не определяю пользовательский ControlTemplate. Если я оставлю шаблон как шаблон по умолчанию, вещи внутри него получат свои события проверки и будут использовать их шаблоны проверки.
Почему это происходит, и как я могу получить стандартную функциональность для обработки этих событий ошибок валидации снова, используя пользовательский шаблон элемента управления?
Спасибо!