Comment affichez-vous un UserControl
personnalisé sous forme de boîte de dialogue dans C #/WPF (.NET 3.5)?
Placez-le dans un Window et appelez 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();
Cela a fonctionné comme une magie pour moi. Peut-il être fait sous forme de dialogue modal?
Ans: ShowDialog lui-même le faire comme boîte de dialogue modale .. ...
Pour autant que je sache, vous ne pouvez pas faire cela. Si vous souhaitez l'afficher dans une boîte de dialogue, c'est très bien, créez simplement une nouvelle fenêtre qui ne contient que votre UserControl et appelez ShowDialog () après avoir créé une instance de cette fenêtre.
EDIT: La classe UserControl
ne contient pas de méthode ShowDialog, donc ce que vous essayez de faire n'est en fait pas possible.
Cependant, ceci est:
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();
}
}
}
Son utilisation peut être aussi simple que UserControlInstance.ShowDialog (). Une meilleure implémentation personnalisée serait d'étendre la classe Window et de la personnaliser en utilisant le concepteur et le code pour obtenir n'importe quelle fonctionnalité.
Je sais que c'est pour .net 3.5, mais voici une solution viable pour .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();