Es necesario:
- Crear algunas propiedades públicas en la ventana de diálogo para pasar en los valores
- vincular a su control de usuario a las propiedades públicas en su cuadro de diálogo Ventana
- Mostrar su cuadro de diálogo Ventana como diálogo cuando sea necesario
- (opcional) recuperar valores de la ventana que están vinculados bidireccionalmente a su control de usuario
aquí hay algo de pseudocódigo que se parece mucho 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ía lo mismo en su UserControl como lo ha hecho en su ventana para crear propiedades públicas y luego vincularlas dentro de la xaml.
¿Su control de usuario generalmente se vincula a los objetos que está editando? Más información puede ser útil. En cuanto a las opciones para crear instancias en una nueva ventana ... puede probar una ventana emergente o una nueva Ventana que tenga su control de usuario como un niño y solo llame al método .Show() después de establecer las propiedades o vincular los valores de a lo que estás editando – Scott