我有一个程序,必须在启动时加载颜色。
然后,我必须添加一个带有选项卡项的tabcontrol:

TabControl tabc = m_Executer.GetTabControl();<---- from outside
if (tabc != null)
{
    TabItem tbi = new TabItem();
    tbi.Header.Background = Brushes.Transparent;
    tbi.Header.Content = "End manager";
    tabc.Items.Add(tbi);
    tabc.SelectionChanged += (sender2, args) =>
    {
        ((TabItem)(tabc.SelectedItem)).Background = Brushes.Red;
        tabc.UpdateLayout();
    };
}


这个想法是在触发selectionchanged事件时更改背景,但这不起作用。

最佳答案

您可以使用文本块更改颜色:

TabItem tbi = new TabItem();
tbi.Header = Brushes.Transparent;
TextBlock tbk = new TextBlock() { Text="End manager" };
tbi.Header = tbk;
    tabc.Items.Add(tbi);


然后在事件上更改文本块

tabc.SelectionChanged += (sender2, args) =>
{

    ((TabItem)(tabc.SelectedItem)).Foreground = Brushes.Red;
    tabc.UpdateLayout();

};




编辑您最好取消选中未选中的项目:

tabc.SelectionChanged += (sender2, args) =>
{
    foreach (var item in tabc.Items)
    {
        if (item == ((TabItem)(tabc.SelectedItem)))
            ((TabItem)item).Foreground = Brushes.Red;
        else
        ((TabItem)item).Foreground = Brushes.Black;
    }
};

07-24 13:53