代码之家  ›  专栏  ›  技术社区  ›  Taylor Leese

如何将自定义用户控件显示为对话框?

  •  62
  • Taylor Leese  · 技术社区  · 15 年前

    如何显示自定义 UserControl 作为c/wpf(.net 3.5)中的对话?

    5 回复  |  直到 9 年前
        1
  •  127
  •   user7116 hacken    13 年前

    把它放在一个 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();
    }
    
        2
  •  10
  •   WpfBegnner    11 年前
    Window window = new Window
                {
                    Title = "My User Control Dialog",
                    Content = new OpenDialog(),
                    SizeToContent = SizeToContent.WidthAndHeight,
                    ResizeMode = ResizeMode.NoResize
                };
                window.ShowDialog();
    

    对我来说就像魔术一样。 它能作为模态对话吗?


    答:ShowDialog它自己把它作为模式对话框。…

        3
  •  1
  •   Mark Carpenter    15 年前

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

    编辑: 这个 UserControl 类不包含方法ShowDialog,因此您尝试执行的操作实际上是不可能的。

    然而,这是:

    private void Button_Click(object sender, RoutedEventArgs e){
        new ContainerWindow().ShowDialog();
    }
    
        4
  •  1
  •   gwasterisk    9 年前
    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()一样简单。 更好的定制实现是通过扩展窗口类并使用设计器和代码对其进行定制以获得任何功能。

        5
  •  -1
  •   Taylor Leese    14 年前

    如果修改了“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 ( );
    }