为什么我的二传手不能工作

时间:2014-09-17 08:21:10

标签: wpf xaml

<TabControl ItemsSource="{Binding Tabs}" SelectedItem="{Binding SelectedTab, UpdateSourceTrigger=PropertyChanged}" Margin="15">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <ContentControl Content="{Binding Title}">
                        <ContentControl.Style>
                            <Style>
                                <Setter Property="Background" Value="Orange"></Setter>
                            </Style>
                        </ContentControl.Style>
                    </ContentControl>
...more code

在上面,我正在尝试设置tabcontrol,特别是选项卡本身。

问题是尝试为整个标签项设置背景颜色。 XAML不喜欢Setter Property="Background"位。

我不是要求某人修复它(本身),但为什么 XAML不喜欢它(所以我能理解它)。

我的理解是(这是我需要指导的地方):我知道BackgroundContentControl的有效属性,所以我们可以告诉WPF我们通过{{访问它的样式1}} - 现在,它期待一种风格,因此我们提供ContentControl.Style标签,然后提供style

  

无法解析样式属性“背景”。验证拥有类型是Style的TargetType,或使用Class.Property语法指定属性。

有人可以解释我的想法不正确吗?

1 个答案:

答案 0 :(得分:2)

因为它不知道样式适用的类型,所以你必须使用Style的{​​{3}}属性来指定它:

<Style TargetType="ContentControl">
    <Setter Property="Background" Value="Orange"></Setter>
</Style>

我认为在您的情况下,将样式设置在更高级别更容易:

<TabControl.Resources>
    <Style TargetType="TabItem">
        <Setter Property="Background" Value="Orange" />
    </Style>
</TabControl.Resources>

或删除ContentControl

<DataTemplate>
    <Grid>
        <Grid.Style>
            <Style TargetType="Grid">
                <Setter Property="Background" Value="Orange"></Setter>
            </Style>
        </Grid.Style>

        <Label Content="{Binding Title}" />
    </Grid>
</DataTemplate>