2010-01-28 16 views
5

Tengo un botón en mi control de usuario que se debe utilizar para eliminar el control de usuario de su contenedor primario. Esta es la forma en que lo he codificado hoy.WPF: Eliminar "usted mismo" del contenedor principal

private void RemoveRoleButton_Click(object sender, RoutedEventArgs e) 
{ 
    if (ConfirmRoleRemoval()) 
    { 
     Panel parentPanel = (Panel)this.Parent; 
     parentPanel.Children.Remove(this); 
    } 
} 

private bool ConfirmRoleRemoval() 
{ 
    return MessageBox.Show("Are you sure [...] 
} 

¿Es normal hacerlo de esta manera en WPF?

+2

En lugar de eliminar, puede intentar establecer su propiedad 'Visibility' en' Collapsed', debería tener el mismo efecto visual y no causará demasiado caos en el fondo. –

Respuesta

6

Sí, me parece bien. Como Mike Hillberg escribe in his blog:

Un elemento en realidad no elige su elemento primario lógico; en cambio, un padre "adopta" niños.

Por lo tanto, tiene sentido que "eliminar" un elemento secundario también se realice a través del modelo de objetos del elemento primario.

Como nota al margen: Es posible que desee considerar lanzar una "buena" excepción (o incluso deshabilitar el botón) cuando el padre no es un Panel (en lugar de esperar el InvalidCastException).

Cuestiones relacionadas