Вы можете использовать DataTemplateSelector, как сказал Эльдар. Я добавил несколько фрагментов кода для начала.
Шаг 1 - Создайте класс, унаследовав DataTemplateSelector, как показано ниже,
public class TabControlContentTemplateSelector : DataTemplateSelector
{
public DataTemplate LoginContentDataTemplate { get; set; }
public DataTemplate PlayerContentDataTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var obj = item as CcPlayerViewModel;
if (obj != null)
{
if(obj.Login.IsRunningSession)
{
return PlayerContentDataTemplate;
}
}
return LoginContentDataTemplate;
}
}
Шаг 2 - Создайте еще один класс с именем "TabControlItemTemplateSelector", который наследуется от "DataTemplateSelector", как показано ниже,
public class TabControlItemTemplateSelector : DataTemplateSelector
{
public DataTemplate TabControlNewItemDataTemplate { get; set; }
public DataTemplate PlayerTabItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var obj = item as CcPlayerViewModel;
if (obj != null)
{
if(obj.Login.IsRunningSession)
{
return PlayerTabItemTemplate;
}
}
return TabControlNewItemDataTemplate ;
}
}
Шаг 3 - Создайте TemplateSelectors в вашем .xaml, как показано ниже,
<local:TabControlContentTemplateSelector x:Key="TabControlItemTemplateSelector"
LoginContentDataTemplate="{StaticResource LoginContentDataTemplate}"
PlayerContentDataTemplate="{StaticResource PlayerContentDataTemplate}" />
<local:TabControlItemTemplateSelector x:Key="TabControlContentTemplateSelector"
TabControlNewItemDataTemplate="{StaticResource TabControlNewItemDataTemplate}"
PlayerTabItemTemplate="{StaticResource PlayerTabItemTemplate}" />
Шаг 4 - Используйте оба вышеупомянутых TemplateSelectors и назначьте их вашему TabControl, как показано ниже в вашем .xaml
<TabControl Name="TabControlPlayers" ItemsSource="{Binding Players}"
ItemTemplateSelector="{StaticResource TabControlItemTemplateSelector}"
ContentTemplateSelector="{StaticResource TabControlContentTemplateSelector}"/>
Примечание: - В этом случае вы не используете ваш существующий "TabControlStyle", пока вы не сделаете что-то еще для TabControl.
Ваш существующий DataContext все еще может нормально работать.
Попробуйте и позвольте нам известно, если у вас возникнут какие-либо проблемы.