Окно WPF, размещающее usercontrol

У меня есть usercontrol, который я использую для редактирования некоторых объектов в моем приложении.

Я недавно приехал в экземпляр, где я хочу открыться новое диалоговое окно (окно), которое разместит этот usercontrol.

Как я инстанцирую нового окна и передаю какие-либо свойства, которые должны быть установлены от окна до usercontrol?

Спасибо за внимание.

7
задан Dave Clemmer 18 September 2011 в 18:25
поделиться

2 ответа

Вам необходимо:

  1. Создать некоторые общедоступные свойства в диалоговом окне для передачи значений
  2. Привязать свой UserControl к этим общедоступным свойствам в диалоговом окне.
  3. При необходимости отображать диалоговое окно в виде диалогового окна
  4. (необязательно) получить значения из окна, которые двусторонне привязаны к вашему пользовательскому элементу управления

Вот некоторый псевдокод, который замечательно похож на C # и XAML:

Как показать окно как диалоговое окно:

var myUserControlDialog d = new MyUserControlDialog();
d.NeededValueOne = "hurr";
d.NeededValueTwo = "durr";
d.ShowDialog();

и source

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.

1
ответ дан 6 December 2019 в 14:04
поделиться

Вы можете просто установить содержание вашего нового окна в свой пользовательский элемент управления. В коде это будет примерно так:

...

MyUserControl userControl = new MyUserControl();

//... set up bindings, etc (probably set up in user control xaml) ...

Window newWindow = new Window();
newWindow.Content = userControl;
newWindow.Show();

...
14
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: