WPF自定义窗口 输入验证不生效
- [WPF ValidationRule 不生效](#WPF ValidationRule 不生效)
WPF ValidationRule 不生效
解决方案:在WindowStyle的Template中添加AdornerDecorator标签。
xml
<Style x:Key="WindowStyle1" TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<AdornerDecorator>
<ContentPresenter />
</AdornerDecorator>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
为什么官网例子,运行没问题,放到自己的程序里,验证提示就不生效?
是因为现在新版vs或blend的WindowStyle代码模板去掉了一些重要的东西,其中就包含AdornerDecorator。而自带的window窗口样式中包含了AdornerDecorator标签,因此你用官网的例子没有问题,放到你的自定义窗口项目里就始终无法显示。
官方示例:
- https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.validationrule?view=windowsdesktop-9.0
- https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.adornedelementplaceholder?view=windowsdesktop-9.0
- https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.documents.adornerdecorator?view=windowsdesktop-9.0