Вам нужно:
- Создать некоторые общие свойства в диалоговом окне, чтобы передать значения
- Bind вашего UserControl для тех общественных свойств в вашем диалоговом окне Окно
- Отобразите диалоговое окно Окно в диалоговом окне, если необходимо
- (необязательно) извлекать значения из окна, которые связаны двусторонним образом с вашим пользовательским управлением
Вот некоторые псевдокод, который выглядит замечательно, как C# и XAML:
Как показать окно, как диалог:
var myUserControlDialog d = new MyUserControlDialog();
d.NeededValueOne = "hurr";
d.NeededValueTwo = "durr";
d.ShowDialog();
и источник
public class MyUserControlDialog : Window
{
// you need to create these as DependencyProperties
public string NeededValueOne {get;set;}
public string NeededValueTwo {get;set;}
}
и 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>
вы сделали бы то же самое в своем UserControl, как и в своем окне, чтобы создавать общедоступные свойства, а затем привязываться к ним в xaml.
Контролирует ли ваш пользовательский контроль объекты, которые вы редактируете? Дополнительная информация может быть полезна. Что касается вариантов создания экземпляра в новом окне ... вы можете попробовать всплывающее окно или новое окно, в котором пользовательский контроль будет дочерним, и просто вызовите метод .Show() после того, как вы установите свойства или привяжите значения к тому, что вы редактируете. – Scott