WPF自定義窗口 輸入驗證不生效
- WPF ValidationRule 不生效
WPF ValidationRule 不生效
解決方案:在WindowStyle的Template中添加AdornerDecorator標簽。
<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