2015-02-18 2 views
0

У меня есть окно и оно содержит элемент управления вкладкой. Каждый элемент управления вкладкой содержит отображение UserControl.Получить содержимое выбранной вкладки

Как получить объект содержимого активной вкладки и вызвать метод этого объекта?

+1

Если контрольная вкладка в МОФ, чем вы можете использовать TabControl.SelectedItem – yash

+0

Попробуйте что-то вроде 'var ctrl = tabCtrl.SelectedContent как UserControl;' – helb

+0

Но каждая вкладка имеет различный контроль. Как я могу получить его полиморфно? –

ответ

2

Вы можете получить содержимое выбранного элемента вкладки с TabControl.SelectedContent:

Получает содержимое выбранного TabItem.

Это вернет все, что вы разместили в элементе табуляции. Вы можете получить это безопасно, как UserControl, если вы разместите свои собственные элементы управления в элементах табуляции.

var ctrl = tabCtrl.SelectedContent as UserControl; 

Конечно, вместо UserControl вы можете использовать любой общий базовый класс фактического контроля, который вы используете.

EDIT: Чтобы вызвать метод определенного контроля, вы можете привести к фактическому типу:

if(ctrl is MySpecificControl1) 
{ 
    var myCtrl1 = (MySpecificControl1)ctrl; 
    myCtrl1.MySpecificMethod(); 
} 
+0

@TalhaIrfan Что значит? Вы получаете исключение? Пожалуйста, будьте более конкретными. – helb

+0

Когда я пишу: TabItem ctrl = mainTab.SelectedContent как WorkSpaceViewControl; Это дает мне ошибку, что я не могу неявно преобразовать TabItem в WorkSpaceView Control. Требуется явное преобразование? –

+0

это потому, что вы пытаетесь неявно скрывать результат до 'TabItem'. Попробуйте с помощью 'var ctrl = ...' вместо 'TabItem ctrl = ...' – helb

Смежные вопросы