validate - validations wpf
Solución alternativa para vincular la lista de expresiones en el grupo de enlace que está vacío (1)
Para admitir los "valores propuestos" que no están comprometidos con el objetivo de un enlace bidireccional hasta que la validación sea exitosa, WPF 4.0 DataGrid
se rediseñó para aprovechar la nueva característica BindingGroup.SharesProposedValues
de WPF 4.0. Debido a este cambio, ya no es necesario usar enlaces bidireccionales en el grupo vinculante de plantillas de visualización.
Puede usar BindingGroup.TryGetValue
para recuperar los valores propuestos para otras columnas en lugar de usar el método anterior que funcionaba con DataGrid
del WPF Toolkit .
En otras palabras, el nuevo DataGrid
realmente arregla una característica no deseada del DataGrid
y, como resultado, las cosas funcionan de forma ligeramente diferente (es decir, los enlaces que faltan son por diseño) pero aún puede hacer lo que necesita hacer.
La explicación en las propias palabras de Microsoft se encuentra en este enlace de Microsoft Connect:
- BindingExpressions en BindingGroup pasado a ValidationRule en DataGrid.RowValidationRules está vacío
Y aquí hay un blog que describe BindingGroup.SharesProposedValues
de otra manera:
En WPF 4, la lista de expresiones de enlace en el grupo de enlace, que se pasa al método Validate de ValidationRule
, está vacía.
Es lo mismo si AutoGenerateColumns
es verdadero o falso, si DataGridBoundColumns
se ha agregado explícitamente a la cuadrícula de datos.
En WPF 3.5 SP1 utilizando DataGrid
del Toolkit, la lista de expresiones de enlace se completa con las expresiones de enlace excluidas (1 para cada columna en la cuadrícula de datos)
Considero que esto es un error y lo he publicado en el sitio de Microsoft Connect: https://connect.microsoft.com/WPF/feedback/details/642815/bindingexpressions-on-bindinggroup-passed-to-validationrule-in-datagrid-rowvalidationrules -esta vacio
Pero, ¿alguien tiene una solución para que pueda obtener la expresión de enlace correcta desde ValidationRule
?