XAML中的样式不起作用

时间:2013-01-25 13:03:40

标签: wpf xaml button styles tabitem

为什么TabItems的颜色总是黑色?我想要黑色Background和白色字母。此外Button应为白色,但它也是黑色且不可见。有一些冲突,但无法找到。有任何想法吗?请事先提供帮助。

<UserControl x:Class="Test.Test"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
         xmlns:cal="http://www.caliburnproject.org"   
         xmlns:cm="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
         mc:Ignorable="d" d:DesignHeight="252" d:DesignWidth="894" Background="#FF111111">    

<Grid>        
    <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="48" Margin="70,-14.668,0,0" FontWeight="Light"><Run Language="de-at" Text="test test"/></TextBlock>
    <Button x:Name="Close" Content="➔" HorizontalAlignment="Left" VerticalAlignment="Top" Width="58" Foreground="White" Height="58" RenderTransformOrigin="0.5,0.5" FontSize="40" Margin="-7.625,-8,0,0" Padding="1,-5,1,1" Clip="M50.333,8 L-1.667,8 L-1.667,59.843 L50.333,59.843 z" cm:Message.Attach="Close()">
        <Button.RenderTransform>
            <TransformGroup>
                <ScaleTransform ScaleY="1" ScaleX="-1"/>
                <SkewTransform AngleY="0" AngleX="0"/>
                <RotateTransform Angle="0"/>
                <TranslateTransform/>
            </TransformGroup>
        </Button.RenderTransform>
    </Button>

    <TabControl Margin="42,52,0,0">
        <TabItem Header="Start">

        </TabItem>
            <TabItem Foreground="White" Header="Start 1" >

        </TabItem>
        <TabItem Foreground="White" Header="Start 1">

        </TabItem>
        <TabItem Foreground="White" Header="Start 1">

        </TabItem>
        <TabItem Foreground="White" Header="Start 1">

        </TabItem>
    </TabControl>       
</Grid>

我尝试过很多东西而且没用。所以我所做的就是在TextBlock

中添加TabItem.Header
<TabItem>
    <TabItem.Header>
        <TextBlock FontSize="25" Text="Start1" />
    </TabItem.Header>
</TabItem>

现在,我可以使用TextBlock更改Foreground的颜色。但如果点击TextBlock,我不知道如何更改TabItem颜色。也许我应该为此开一个新话题。谢谢你的贡献。

1 个答案:

答案 0 :(得分:1)

您根本没有设置Background的{​​{1}}或Foreground属性,因此它使用的是默认颜色。

任何TabControl对象的Background属性的默认颜色为Controlsource),而默认Brushes.Transparent属性基于您的系统颜色(source)。

您可以在Foreground中使用隐式样式为指定类型的所有对象设置属性,例如对所有Control对象使用此样式:

UserControl.Resources

或者,如果您可以向<UserControl.Resources> <Style TargetType="{x:Type Control}"> <Setter Property="Background" Value="Black" /> <Setter Property="Foreground" Value="White" /> </Style> </UserControl.Resources> 添加新的刷子,并将其.Resources设置为SystemColors之一的系统键,就像这样:

x:Key

(您可能需要测试一下以确定哪个是正确使用的SystemColors密钥。您可以找到它们的列表here