你如何显示一个自定义的UserControl作为对话框?

如何在C#/ WPF(.NET 3.5)中显示一个自定义UserControl作为对话框?

将它放在窗口中并调用Window.ShowDialog 。

 private void Button1_Click(object sender, EventArgs e) { Window window = new Window { Title = "My User Control Dialog", Content = new MyUserControl() }; window.ShowDialog(); } 
 Window window = new Window { Title = "My User Control Dialog", Content = new OpenDialog(), SizeToContent = SizeToContent.WidthAndHeight, ResizeMode = ResizeMode.NoResize }; window.ShowDialog(); 

已经为我工作像一个魔术。 它可以作为modal dialog吗?


Ans:ShowDialog它自己使它作为模式对话框..

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

编辑: UserControl类不包含方法ShowDialog,所以你要做的事实上是不可能的。

但是,这是:

 private void Button_Click(object sender, RoutedEventArgs e){ new ContainerWindow().ShowDialog(); } 
 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类并使用devise器和代码来定制它来获得任何function。

如果“六因变数”的答案被修改,那么它就可以工作

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