2009-08-11 139 views

回答

114

将它放入Window并致电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

我还发现设置SizeToContent = SizeToContent.WidthAndheight和ResizeMode = ResizeMode.NoResize是有帮助的,因此它可以让用户控制定义大小。 – 2009-08-11 18:49:11

+2

我们如何使用'this.Close()'函数到这个UserControl对话框? – 2013-11-06 11:18:35

+1

private void btnClose_Click(object sender,RoutedEventArgs e) { \t var parent = this.Parent as Window; \t if(parent!= null) \t { \t \t parent.DialogResult = true; \t \t parent.Close(); \t} } – 2016-08-22 07:08:13

2

据我所知你不能这样做。如果你想在对话框中显示它,那很好,只需创建一个只包含你的UserControl的新窗口,并在创建该窗口的一个实例后调用ShowDialog()。

编辑:UserControl类不包含的方法ShowDialog的,所以你想做什么,其实是不可能的。

然而,这就是:

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

如果 'sixlettervariables' 答案是修改的话,它的工作原理

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

您忘记了'Background = Brushes.Purple';没有这个,它就无法工作。 – 2013-05-29 15:36:35

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

有一个像我的一个神奇的工作。 它可以作为模态对话框吗?


答:它的ShowDialog自使它作为模态对话框......

+0

SizeToContent非常有用。谢谢。 – honzakuzel1989 2017-04-07 14:57:01

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(); 
     } 
    } 
} 

它的使用也许就这么简单UserControlInstance.ShowDialog()。 更好的自定义实现将通过扩展Window类并使用设计器和代码对其进行自定义以获得任何功能。

+0

不错的例子,只是为了WPF(System.Windows.Window.ShowDialog())返回类型应该是bool? (可空类型) – 2016-08-22 05:56:43