Вам необходимо:
- Создайте некоторые открытые свойства в диалоговом окне, чтобы передать значения
- Свяжите свой 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.