tutoriales - Ventana de WPF que aloja usercontrol
tutoriales de wpf (2)
Tengo un usercontrol que utilizo para editar algunos objetos en mi aplicación.
Recientemente he llegado a una instancia en la que quiero abrir un nuevo cuadro de diálogo (ventana) que albergará este control de usuario.
¿Cómo instalo la nueva ventana y paso cualquier propiedad que deba establecerse desde la ventana al control de usuario?
Gracias por tu tiempo.
Necesitas:
- Crea algunas propiedades públicas en tu ventana de diálogo para pasar los valores
- Enlace su UserControl a esas propiedades públicas en su ventana de diálogo
- Muestra tu ventana de diálogo como diálogo cuando sea necesario
- (opcional) recupera valores de la ventana que están vinculados en dos direcciones a su control de usuario
Aquí hay un pseudocódigo que se parece notablemente a C # y XAML:
Cómo mostrar una ventana como un diálogo:
var myUserControlDialog d = new MyUserControlDialog();
d.NeededValueOne = "hurr";
d.NeededValueTwo = "durr";
d.ShowDialog();
y la fuente
public class MyUserControlDialog : Window
{
// you need to create these as DependencyProperties
public string NeededValueOne {get;set;}
public string NeededValueTwo {get;set;}
}
y el xaml
<Window x:Class="MyUserControlDialog" xmlns:user="MyAssembly.UserControls">
<!-- ... -->
<user:MyUserControl
NeededValueOne="{Binding NeededValueOne, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"
NeededValueTwo="{Binding NeededValueTwo, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"
</Window>
harías lo mismo en tu UserControl como lo hiciste en tu ventana para crear propiedades públicas y luego enlazarlas dentro de la xaml.
Simplemente puede establecer el contenido de su nueva ventana a su control de usuario. En código, esto sería algo como esto:
...
MyUserControl userControl = new MyUserControl();
//... set up bindings, etc (probably set up in user control xaml) ...
Window newWindow = new Window();
newWindow.Content = userControl;
newWindow.Show();
...