Пользовательский вопрос управления WPF - PullRequest
1 голос
/ 25 января 2011

Я делал это раньше, но я не могу найти свой старый код.

как вы встраиваете окно в окно.

скажем, я создал пользовательскую форму и сохранил ее какWindow1.xaml, и хочу вставить его в Window2.xaml, без копирования и вставки кода xaml .. TIA

РЕДАКТИРОВАТЬ: я думаю, что мой вопрос несколько вводит в заблуждение, я перефразирую его.

У меня есть этот Window1.xaml. Я добавил пользовательские заголовки и фоновые изображения / цвета.

, затем в Window2.xaml, я хочу, чтобы Window1 был пользовательским элементом управления и вставил его сюда.

неуверен, если его Content Presenters, все еще гуглил для ответа:)

Ответы [ 5 ]

3 голосов
/ 25 января 2011

Вы не можете разместить окно WPF внутри другого окна WPF, но вы можете переместить содержимое из одного окна в другое:

var window1 = new Window1();
var window2 = new Window2();

var content = window1.Content;
window1.Content = null;
window2.Content = content;

Обратите внимание, что для window1.Content установлено null или другоевы получите исключение, так как в противном случае содержимое будет иметь визуального родителя.

ОБНОВЛЕНИЕ Похоже, все, что вам нужно сделать, это скопировать весь XAML между тегами <Window></Window> в Window1 в новый UserControl, затем разместите этот пользовательский элемент управления в Window2.

1 голос
/ 25 января 2011

Я полагаю, что в таких случаях вам следует использовать страницы или пользовательский контроль. Таким образом, вы можете перейти к другим частям / страницам / элементам управления, определенным в приложении. CodeKaizen прав, вы не можете разместить окно в другом окне

0 голосов
/ 26 февраля 2011

Похоже, вы действительно хотите UserControl.Измените тип Window1 с Window на UserControl, а затем поместите этот UserControl в Window2.

0 голосов
/ 25 января 2011

Я знаю, что вы можете сделать это в коде

//Window you want to show
Window1 child = new Window1(); 

object content = child.Content;
child.Content = null;

//Where to show
this.grid1.Children.Clear();    
this.grid1.Children.Add((UIElement)content);

Надежда помогает!

0 голосов
/ 25 января 2011

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

...