应用自定义窗口样式和模板后,验证错误未显示 (c#,WPF)

3

在我的应用程序资源中,我定义了以下样式,这里给你一个简化版(该样式意味着应用于应用程序中的所有窗口):

<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>

我注意到,当这种样式应用于所有窗口时,验证错误(IDataErrorInfo)-通过默认的红色边框框绕控件错误模板-在那些窗口中不会显示。是什么原因呢?

1
不要复现。使用Snoop检查窗口并查看AdornerLayer和AdornerDecorators所在的位置。如果您看到它们,问题可能出在其他地方,可能是绑定问题,也可能是INDEI实现问题。 - user1228
抱歉,我的初始示例结果是不正确的。你提到AdornerDecorators确实有所帮助:我的窗口样式模板中没有包含任何内容,因此将模板窗口网格包装到AdornerDecorator中有助于解决这个问题。现在正在显示验证错误。谢谢。 - Mikhail
翻译:嗯,你应该在下面添加答案,说明如何解决这个问题(你的模板更改会很好),这样你就可以关闭你的问题了。 - user1228
完成。@Will,再次感谢你。我已经点赞了你的提示。我还能以其他方式感谢你的帮助吗? - Mikhail
那很好。我不确定问题到底是什么,所以我没有把它作为答案添加进去。我的虚拟网络点数已经够多了,所以没关系。 - user1228
@Will,好的。那我就把自己的答案标记为正确的了。这很疯狂,但也许会让某个谷歌搜索的人生活更轻松... - Mikhail
1个回答

3
将窗口模板(例如StackPanel)包装在AdornerDecorator中解决了这个问题(因为装饰器用于显示验证错误)。
感谢Will,我甚至不知道该寻找什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接