powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
6 сообщений из 6, страница 1 из 1
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38533495
WPF Падаван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Такой вот вопросик возник.
Мне нужно динамически добавлять панельки на форму. Я реализовал это через DevExp DockLayoutManager. Пример есть в их Демо приложении (DockingDemo.Wpf DocumentGroups.xaml).
В целом все работает.

Вопрос такой.
Мне нужно как-то получить доступ к этому Window, который внутри панельки. В это окно добавил метод, по настройке таблице. Т.е. мне нужно просто вызвать метод этого Window.

Вот код
Код: c#
1.
2.
3.
4.
5.
6.
               DocumentGroup documentContainer = dockManager.GetItem("documentContainer") as DocumentGroup;
                DocumentPanel panel = dockManager.DockController.AddDocumentPanel(
                    documentContainer, new Uri("/WpfSample;component/MyWindows/Win1.xaml", UriKind.Relative));
                panel.Caption = "SomeName";
                MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
                win.DoInit(object Obj);



Согласно документации на их сайте
http://documentation.devexpress.com/#WPF/DevExpressXpfDockingLayoutPanel_Uritopic
свойство Control возвращает "returns the root element of the Window/Page" - т.е. Grid.

А когда я вызываю (panel.Control as Grid).Parent - то получаю ссылку на DockLayoutManager !

Я не совсем понимаю. Само Window где ? DockLayoutManager становится parent'ом в логическом дереве для Грида из Окна ? Но само окно то с его кодом куда девается ? :)

Подскажите пожалуйста - как добратся до самого Window, привести его к нужному классу и вызвать его метод ?
т.е. как заставить работать этот код
Код: c#
1.
2.
MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
win.DoInit(object Obj);



Не переносить же мне логику заполнения грида в форму, на которой находится DockLayoutManager !
Не говоря уж о том, что я планировал иметь несколько таких Window и загружать их динамически. Хочется чтобы они сами себя настраивали же.
...
Рейтинг: 0 / 0
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38533499
WPF Падаван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну в худшем случае, подскажите, можно как-то получить из Grid - компонент, располагающийся в нем по имени ? Ну там dataGtid.

Хотя бы может буду заполнять DataGrid из основной формы.
...
Рейтинг: 0 / 0
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38534534
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF Падаван,

Window parentWindow = Window.GetWindow(this)
...
Рейтинг: 0 / 0
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38534927
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF ПадаванПривет.

Такой вот вопросик возник.
Мне нужно динамически добавлять панельки на форму. Я реализовал это через DevExp DockLayoutManager. Пример есть в их Демо приложении (DockingDemo.Wpf DocumentGroups.xaml).
В целом все работает.

Вопрос такой.
Мне нужно как-то получить доступ к этому Window, который внутри панельки. В это окно добавил метод, по настройке таблице. Т.е. мне нужно просто вызвать метод этого Window.

Вот код
Код: c#
1.
2.
3.
4.
5.
6.
               DocumentGroup documentContainer = dockManager.GetItem("documentContainer") as DocumentGroup;
                DocumentPanel panel = dockManager.DockController.AddDocumentPanel(
                    documentContainer, new Uri("/WpfSample;component/MyWindows/Win1.xaml", UriKind.Relative));
                panel.Caption = "SomeName";
                MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
                win.DoInit(object Obj);



Согласно документации на их сайте
http://documentation.devexpress.com/#WPF/DevExpressXpfDockingLayoutPanel_Uritopic
свойство Control возвращает "returns the root element of the Window/Page" - т.е. Grid.

А когда я вызываю (panel.Control as Grid).Parent - то получаю ссылку на DockLayoutManager !

Я не совсем понимаю. Само Window где ? DockLayoutManager становится parent'ом в логическом дереве для Грида из Окна ? Но само окно то с его кодом куда девается ? :)

Подскажите пожалуйста - как добратся до самого Window, привести его к нужному классу и вызвать его метод ?
т.е. как заставить работать этот код
Код: c#
1.
2.
MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
win.DoInit(object Obj);



Не переносить же мне логику заполнения грида в форму, на которой находится DockLayoutManager !
Не говоря уж о том, что я планировал иметь несколько таких Window и загружать их динамически. Хочется чтобы они сами себя настраивали же.

просто интересно, зачем Вы программно добавляете layotpanel ? Для чего?

Скажем у меня в приложении панельки добавлены в XAML docklayotmanager и юзер их при необходимости может закрыть/открыть или отправить в авто_хайд состояние...
...
Рейтинг: 0 / 0
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38535057
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF Падаван,

Изначально идея хорошая - динамически добавлять компоненты. Но вот дальнейший подход ОЧЕНЬ КРИВОЙ. В ВПФ так делать - это если только только начинаешь его изучать.

Вы должны создать нужные вам вьюхи и через биндинги реализовать все что вам нужно. А потом эти вьюхи динамически отображать на основе загруженных моделвью - примеров в инете полно подобных.
...
Рейтинг: 0 / 0
DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
    #38535060
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF Падаван,

И на будущее - если вы не создаете новые контролы (не юзер, а именно новый контрол), то в коде у вас не должно быть контролов.
Если они там есть - значит плохо реализовали архитектуру ВПФ. У Вас есть такая мощная штука как Binding и т.п.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DevExpress. DockLayoutManager. Добавляю DocumentPanel на основе Window. Как получить ссылк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]