Невозможно изменить задний цвет выбранной вкладки в silverlight

У меня есть TabControl с TabItem. Я хочу изменить цвет фона заголовка tabitem для выбранной вкладки.

Поэтому я установил код XAML, как показано ниже.

<sdk:TabControl Background="WhiteSmoke" Foreground="Black" 
            SelectionChanged="TabControl_SelectionChanged">
<sdk:TabItem Name="adminTab" BorderBrush="Black">
    <sdk:TabItem.Header>
        <StackPanel Name="adminsp" Background="#C7CEF7">
            <Image Name="ico1" Source="Images/admin.png"/>
            <TextBlock Text="Admin"/>
        </StackPanel>
    </sdk:TabItem.Header>
</sdk:TabItem>
<sdk:TabItem Name="userTab" BorderBrush="Black">
    <sdk:TabItem.Header>
        <StackPanel Name="usersp" Background="#C7CEF7">
            <Image Name="ico1" Source="Images/user.png"/>
            <TextBlock Text="User"/>
        </StackPanel>
    </sdk:TabItem.Header>
</sdk:TabItem>

and in CS code as

void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    TabControl tab = sender as TabControl;
    if (adminTab.IsSelected)
    {
        adminsp.Background = new SolidColorBrush(Colors.Blue);  
    }
    else
    {
        adminsp.Background = new SolidColorBrush(Color.FromArgb(255, 199, 229, 249));
    }
                            .
                            .
}

Но цвет фона не меняется, буду признателен за любую помощь!


person Dhinesh    schedule 03.04.2014    source источник


Ответы (1)


Вы должны сделать что-то подобное, если хотите сделать это напрямую, в противном случае вам следует изменить стиль TabControl,

    TabControl currentTab = (TabControl)sender;
    TabItem selectedItem = currentTab.SelectedItem as TabItem;
    if (selectedItem != null)
    {
        foreach (TabItem currentItem in currentTab.Items)
        {
            if (currentItem == selectedItem)
            {
                selectedItem.BorderBrush = new SolidColorBrush() { Color = Colors.Green };
                selectedItem.Background = new SolidColorBrush() { Color = Colors.LightGray };
            }
            else
            {
                currentItem.BorderBrush = new SolidColorBrush() { Color = Colors.Blue };
                currentItem.Background = new SolidColorBrush() { Color = Colors.Gray };
            }
        }
    }
person Sajeetharan    schedule 03.04.2014