如果未在选项卡中设置某些内容,我想设置TabItem标头(TabItem.Background)的背景色。为此,我在ViewModel中具有一个Brush属性,该属性绑定到TabItem的Background属性。但是,我不确定如何获取/创建默认的TabItem背景笔刷。

public Brush TabItemBrush
{
    get
    {
        return IsContentSet ? DefaultTabItemBrush : Brushes.LightSkyBlue;
    }
}


<TabItem Header="Some Header" Background="{Binding TabItemBrush, Mode=OneWay}">


我希望DefaultTabItemBrush画笔与其他TabItem匹配,因此,如果主题更改,则所有TabItem仍将看起来相同。

SystemColors中是否提供默认画笔?

使用C#/ .NET 3.5

最佳答案

我最终使用了In WPF, how do I get the current theme's button background?中的解决方案

然后在我的代码看起来像:

public Brush TabItemBrush
{
    get
    {
        return IsContentSet ?  (Brush)UIUtilities.GetValueFromStyle(typeof(TabItem), Control.BackgroundProperty) : Brushes.LightSkyBlue;
    }
}


<TabItem Header="Some Header" Background="{Binding TabItemBrush, Mode=OneWay}">


当IsContentSet == true时,它将使用默认画笔,而在这种情况下,如果使用其他画笔,则为LightSKyBlue

10-08 09:16