应用自定义 window 样式和模板后未显示验证错误(c#、WPF)
Validation errors not displayed after applying custom window style & template (c#, WPF)
在我的应用程序资源中,我定义了以下样式,好吧,我给你的是简单版本(样式旨在应用于应用程序中的所有 windows):
<Style TargetType="{x:Type Window}" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="Template">
<!--Omitting irrelevant property setters-->
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<StackPanel>
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我注意到,当此样式应用于所有 windows 时,验证错误 (IDataErrorInfo) — 通过默认的 red-border-box-around-control 错误模板 — 不会显示在那些 windows.
什么给了?
将 window 模板(本例中的 StackPanel)包装到 AdornerDecorator 中解决了这个问题(因为装饰器用于显示验证错误)。
多亏了威尔,我什至不知道要找什么。
在我的应用程序资源中,我定义了以下样式,好吧,我给你的是简单版本(样式旨在应用于应用程序中的所有 windows):
<Style TargetType="{x:Type Window}" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="Template">
<!--Omitting irrelevant property setters-->
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<StackPanel>
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我注意到,当此样式应用于所有 windows 时,验证错误 (IDataErrorInfo) — 通过默认的 red-border-box-around-control 错误模板 — 不会显示在那些 windows.
什么给了?
将 window 模板(本例中的 StackPanel)包装到 AdornerDecorator 中解决了这个问题(因为装饰器用于显示验证错误)。
多亏了威尔,我什至不知道要找什么。