Как вы показываете пользовательский UserControl
в качестве диалога в С#/WPF (.NET 3.5)?
Как вы показываете пользовательский UserControl в качестве диалога?
Ответ 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 ( );
}