XAML 中的样式控制错误“表达式类型不是有效的样式值”

Mai*_*anh 1 c# wpf xaml

我收到的错误表明我在 XAML 代码中使用了无效的表达式类型,其标记<!-- Error start -->如下:

    <ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:RDictionary="clr-namespace:DLLCustomExtension;assembly=DLLCustomExtension">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary RDictionary:MDExtension.Name="ColorBrushes" Source="Solidbrushes.xaml" />
    </ResourceDictionary.MergedDictionaries>

    <Style x:Key="PrimaryNavToggleButtons" TargetType="{x:Type ToggleButton}">
        <Setter Property="Background" Value="{StaticResource PrimaryNavButtonsBackcolor}" />
        <Setter Property="BorderBrush" Value="{x:Null}" />
        <Setter Property="Foreground" Value="{StaticResource PrimaryNavButtonsForeground}" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="VerticalAlignment" Value="Stretch" />
        <Setter Property="HorizontalAlignment" Value="Stretch" />
        <Setter Property="Margin" Value="3" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToggleButton}"> <!-- Error start -->
                    <Border
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        CornerRadius="5">
                        <Grid>
                            <ContentPresenter
                                x:Name="ContentPresenter"
                                x:Uid="ContentPresenter"
                                Visibility="Visible" />
                            <AdornerDecorator />
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="True" />
                                <Condition Property="IsChecked" Value="False" />
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Background" Value="{StaticResource PrimaryNavButtonHovBackcolor}" />
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="False" />
                                <Condition Property="IsChecked" Value="False" />
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Background" Value="{TemplateBinding Background}" />
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="True" />
                                <Condition Property="IsChecked" Value="True" />
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Background" Value="{StaticResource PrimaryNavButtonHovBackcolor}" />
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="False" />
                                <Condition Property="IsChecked" Value="True" />
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Background" Value="{StaticResource PrimaryNavButtonHovBackcolor}" />
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate> <!-- Error end -->
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?感谢。

ASh*_*ASh 9

<Setter Property="Background" Value="{TemplateBinding Background}" />
Run Code Online (Sandbox Code Playgroud)

该行会产生错误。TemplateBinding在 ContentTemplate 触发器设置器中不起作用。它应该使用Bindingwith来编写RelativeSource TemplatedParent

<Setter Property="Background" 
        Value="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}" />
Run Code Online (Sandbox Code Playgroud)


但是我不明白该行的目的。{TemplateBinding Background}模板部分已经有。为什么要在触发器中重复它?