2009-08-11 23 views

Respuesta

114

colocarlo en un Window y llame Window.ShowDialog.

private void Button1_Click(object sender, EventArgs e) 
{ 
    Window window = new Window 
    { 
     Title = "My User Control Dialog", 
     Content = new MyUserControl() 
    }; 

    window.ShowDialog(); 
} 
+9

También encontré que la fijación de la SizeToContent = SizeToContent.WidthAndheight y ResizeMode = ResizeMode.NoResize eran útiles por lo que permite al usuario controlar definir el tamaño. –

+2

¿Cómo podemos usar la función 'this.Close()' en este cuadro de diálogo UserControl? –

+1

privada vacío btnClose_Click (remitente del objeto, RoutedEventArgs e) { \t var = this.parent padres como ventana; \t if (parent! = Null) \t { \t \t parent.DialogResult = true; \t \t parent.Close(); \t}} –

2

Por lo que sé, no se puede hacer eso. Si desea mostrarlo en un diálogo, eso está perfectamente bien, simplemente cree una nueva ventana que solo contenga su UserControl, y llame a ShowDialog() después de crear una instancia de esa ventana.

EDIT: clase El UserControl no contiene un método ShowDialog, así que lo que estamos tratando de hacer es, de hecho, no es posible.

Esto, sin embargo, es:

private void Button_Click(object sender, RoutedEventArgs e){ 
    new ContainerWindow().ShowDialog(); 
} 
-1

Si la respuesta por sixlettervariables '' es modificado de la manera, funciona

private void button1_Click (object sender, RoutedEventArgs e)     
{ 
    Window window = new Window 
    { 
     Title = "My User Control Dialog", 
     Content = new UserControl (), 
     Height = 200, // just added to have a smaller control (Window) 
     Width = 240 
    }; 

    window.ShowDialog (); 
} 
+9

Se le olvidó 'Antecedentes = Brushes.Purple'; no funcionará sin eso. –

7
Window window = new Window 
      { 
       Title = "My User Control Dialog", 
       Content = new OpenDialog(), 
       SizeToContent = SizeToContent.WidthAndHeight, 
       ResizeMode = ResizeMode.NoResize 
      }; 
      window.ShowDialog(); 

ha trabajado como una magia para mí. ¿Se puede hacer como un diálogo modal?


Respuesta: ShowDialog si mismo sea lo más diálogo modal .. ...

+0

SizeToContent es muy útil. Gracias. – honzakuzel1989

1
namespace System.Window.Form 
{ 
    public static class Ext 
    { 
     public static DialogResult ShowDialog(this UserControl @this, string title) 
     { 
      Window wind = new Window() { Title = title, Content = @this }; 
      return wind.ShowDialog(); 
     } 
    } 
} 

El uso de ella quizá tan simple como UserControlInstance.ShowDialog(). Una mejor implementación personalizada sería ampliar la clase Window y personalizarla usando el diseñador y el código para obtener cualquier funcionalidad.

+0

Buen ejemplo, solo en el caso de WPF (System.Windows.Window.ShowDialog()) ¿El tipo de devolución debería ser bool? (Tipo anulable) –

Cuestiones relacionadas