Подтвердить что ты не робот

Как вы показываете пользовательский UserControl в качестве диалога?

Как вы показываете пользовательский UserControl в качестве диалога в С#/WPF (.NET 3.5)?

4b9b3361

Ответ 1

Поместите его в Window и вызовите Window.ShowDialog. (Также добавьте ссылки на: PresentationCore, WindowsBase и PresentationFramework, если вы этого еще не сделали.)

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

        window.ShowDialog();
}

Ответ 2

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

Сработал у меня как волшебство. Можно ли это сделать как модальный диалог?


Ans: ShowDialog он сам делает это как модальный диалог.....

Ответ 3

Насколько я знаю, вы не можете этого сделать. Если вы хотите показать его в диалоговом окне, это прекрасно, просто создайте новое окно, которое содержит только ваш UserControl, и вызовите ShowDialog() после создания экземпляра этого окна.

EDIT: Класс UserControl не содержит метода ShowDialog, поэтому то, что вы пытаетесь сделать, на самом деле невозможно.

Это, однако, следующее:

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

Ответ 4

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 и его настройке с использованием конструктора и кода для получения любых функций.

Ответ 5

Я знаю, что это для .net 3.5, но вот работоспособное решение для .net 2.0

  MyUserControl myUserControl= new MyUserControl();

  Form window = new Form
  {
    Text = "My User Control",
    TopLevel = true,
    FormBorderStyle = FormBorderStyle.Fixed3D, //Disables user resizing
    MaximizeBox = false,
    MinimizeBox = false,
    ClientSize = myUserControl.Size //size the form to fit the content
  };

  window.Controls.Add(myUserControl);
  myUserControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
  window.ShowDialog();

Ответ 6

Если ответ "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 ( );
}