【问题标题】:Why does my setter not work为什么我的二传手不起作用
【发布时间】:2014-09-17 08:21:09
【问题描述】:
<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

在上面,我正在尝试设置选项卡控件的样式,尤其是选项卡本身。

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

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

我的理解是(这是我需要指导的地方):我知道 BackgroundContentControl 的有效属性,所以从那里,我们可以告诉 WPF 我们正在通过 ContentControl.Style 访问它的样式 - 现在,它需要一个样式,所以我们提供一个style 标签,然后是setter

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

谁能解释一下我的想法哪里不对?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    因为它不知道样式适用的类型,所以你必须指定它,使用StyleTargetType属性:

    <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>
    

    【讨论】:

    • Aaahhhh,因为我当然在做ContentControl.Style 这与TabItem 无关(这是正确的)?意思是我正在尝试向 ContentControl 添加背景而不是 TabItem?
    • 你一般设置为Style,它不知道上面的类型。
    • 好的,所以当我执行 Control.Style(即该控件的样式)时,孩子们不知道父级是什么,所以我必须明确说明它?我会认为因为 Style 是 Control.Style 的子项,所以样式将应用于父项(如果我有意义的话)
    • 奇怪的是,虽然这修复了异常,但样式也没有应用!
    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多