No probé, pero estoy bastante seguro de que la respuesta actualmente aceptada de AresAvatar no funcionará si está cambiando el tamaño de las filas/columnas con las flechas del teclado (enfocando el divisor de la cuadrícula). Este es un caso raro pero posible que debe anticipar en su aplicación.
Cuando se mueve el divisor de cuadrícula (ya sea por arrastrar y soltar o utilizando las flechas del teclado), cambia los Width
/Height
propiedades de dependencia de la ColumnDefinition
/RowDefinition
de la cuadrícula. Le sea fácil registrar un manejador en este cambio de propiedad:
var heightDescriptor = DependencyPropertyDescriptor.FromProperty(RowDefinition.HeightProperty, typeof(ItemsControl));
heightDescriptor.AddValueChanged(myGrid.RowDefinition[0], HeightChanged);
(Este fragmento de voluntad para la pista instancia cambio de tamaño en la primera fila de la parrilla).
Luego puede manejar el cambio de tamaño en un controlador que funcionará en todos los casos.
private void HeightChanged(object sender, EventArgs e)
{
// TODO: handle row resize
}
En general, se aconseja realmente no confiar en la acción de entrada del usuario (arrastre del ratón, entradas de teclado ...) para manejar un OR lógico visuales acciones/eventos, ya que casi siempre hay varias formas de hacerlo las mismas acciones usando diferentes entradas (mouse, teclados, pantalla táctil, herramientas de fácil uso ...).
Léelo aunque no se preocupe por el teclado, ya que es un error de diseño común manejar el evento incorrecto (una de las acciones de entrada, en lugar del resultado general de la acción) – Benlitz
Luego elabore :) I Es curioso por qué preferiría un método no extensible basado en un solo tipo de acción del usuario, sobre manejar el cambio de propiedad adecuado, mientras que ambos tienen aproximadamente el mismo costo de implementación. Supongamos que después de implementar esto, se le pide que agregue un botón que restaure el tamaño de fila predeterminado. No se manejaría cambiar el tamaño programáticamente. Es por eso que creo que este enfoque no es bueno; puede introducir fácilmente errores maliciosos en su UI. Si la operación que realiza en el controlador del cambio de tamaño de fila no es claramente visible, es posible que ni siquiera advierta el problema durante semanas. – Benlitz
Como ejemplo, reaccionar a un dedo DragDelta en lugar de un cambio de tamaño tiene un efecto de animación muy diferente: verifique con Snoop y vea los diferentes mensajes y cuán granulares son. Finalmente, siempre que el teclado no se pueda usar para cambiar el tamaño del GridSplitter (enfocable = falso), de todos modos es un punto discutible. –