2010-06-01 4 views
0

Эй. У меня есть tabcontrol, связанный с наблюдаемой коллекцией.Tabitem.focus фокусируется только на заголовке tabitem

Я пытался делать

var tabitem = (TabItem)this.SingleOrDefault(ti => ti.Name == tabname); 
    tabitem.Focus(); 
    ((UserControl)tabitem.Content).Focus(); 

И действительно кажется, что он сосредоточен на TabItem, но только на баттоне в заголовке TabItem, а не на содержание. содержимое tabitem - это еще один пользовательский контроль.

Как я могу изменить фокус к содержанию, так что на самом деле вкладка выбрана, а не только tabheader

Я знаю tabcontrol.selecteditem, но IOM на самом деле не знаю, как я бы реализовать это как наблюдаемый сбор - фактически класс, который я назвал ObservableTabCollection, который только реализует наблюдаемую коллекцию.

ответ

0

Мое решение стало просто создать метод на observabletabcollection что бы ассоциировать TabControl с observabletabcollection

public TabControl AssociatedTabControl; 

internal void BindToTabControl(TabControl TabCtrl) 
     { 
      AssociatedTabControl = TabCtrl; 
     } 

, а затем внутри вызова метода

if (AssociatedTabControl != null) AssociatedTabControl.SelectedItem = tabitem; 
0

Bind TabControl.SelectedItem двусторонний к определенному TabItem из вашего ObservableTabCollection. Затем вы можете установить привязку к любому элементу, который вы вытаскиваете из своего ObservableTabCollection, чтобы сделать эту вкладку отображаемой вкладкой.

+0

Привет Стефан - спасибо за Ваш ответ. Можете ли вы показать примерный код этого? Будет ли это в xaml или в коде? Я бы предпочел это в коде- – Jakob

+0

Почему вы предпочитаете код? Одна из главных причин использования Silverlight - избежать использования как можно большего количества кода. Также, я думаю, может быть, я немного смущен тем, как настроено ваше приложение. Где TabControl получает свой TabItem? Является ли привязка к некоторому другому элементу управления или привязана к свойству из кода? – Stephan