Esto es un poco de una novela policíaca WPF! Sienes de validación no aparece cuando se espera
Validación ErrorTemplate no aparece en los errores de datos
El problema
Básicamente, estoy usando IDataErrorInfo en mi modelo de vista para proporcionar información sobre los errores de entrada de datos. Puedo ver cómo se llama y funciona como se esperaba, ¡pero WPF nunca muestra la plantilla de error de validación para el control vinculado!
He intentado utilizar la plantilla de error de borde rojo de la caja de texto predeterminada incorporada, una plantilla de error de estilo y una plantilla codificada. Ninguno de estos se muestra en una situación de error de datos.
Heres mi código de enlace xaml:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
wierdly, el error entre en la colección Validation.Errors. El siguiente código da como resultado que el mensaje de error IDataErrorInfo se muestre junto al control enlazado. Esto me lleva a pensar que el problema está en el lado xaml, más bien en el lado del modelo de vista.
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
Además, System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
vuelve verdadera.
Estoy de alojamiento en WPF WinForms si eso hace la diferencia. No puedo encontrar ninguna referencia en mi código o estilos a Validation o ErrorTemplate, así que estoy bastante seguro de que este no es un objetivo propio de diseño.
¡Te pido mi sombrero, señor! Tenía un UserControl> Expander> Textbox en una extensión de VS. Pero no mostraría los errores IDataErrorInfo. Hizo una aplicación WPF de muestra para alojar el UC - problema persistido (VS Extn descartado). Hizo otra VM, eso funcionó descartando la VM. Luego llegué a su publicación: agregué un par de controladores de eventos cargados a la ventana y al UC. Efectivamente, UC devolvió una AdornerLayer nula. Envolvió el contenido del expansor con AdornerDecorator y funcionó. Me retrasó 2 días ... vivir n aprender, supongo. Una vez más, ¡gracias por la persistencia y el tiempo para documentarlo para la posteridad! – Gishu
sin problemas! Perdí 2 días en él también :( –
Esto simplemente solucionó mi problema con una ventana de estilo Metro que no proporcionaba un AdornerDecorator. ¡Gracias! – mortware