2009-08-11 40 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

相關問題