风格不正常

时间:2016-09-06 15:51:50

标签: wpf

在学习WPF时,我创建了一个样式,如果控件具有焦点,则将圆角应用于文本框并设置背景颜色:

sql_server:"Server=tcp:azure_server_name.database.windows.net;DSN=DB_Name;UID=azure_DB_username;PWD=azure_DB_password"

在运行时,如果控件获得焦点,边框将以红色呈现为预期,但文本框的背景颜色不会更改为蓝色。

怎么了?

2 个答案:

答案 0 :(得分:2)

Setter mus有一个TargetName,否则它不知道在哪里设置值。 在你的情况下: <Setter TargetName="border" Property="Background" Value="Blue"/>

答案 1 :(得分:1)

这可能听起来有点令人困惑,但对于背景你需要你的TargetName =&#34; border&#34;

另一方面,对于前景,你不需要:

        <Style TargetType="TextBox" x:Name="efTextBoxStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate x:Name="bal">
                    <Border x:Name="border" BorderThickness="1" CornerRadius="2">
                        <ScrollViewer x:Name="PART_ContentHost"/>
                    </Border>
                     <ControlTemplate.Triggers>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="Red"/>
                            <Setter TargetName="border" Property="Background" Value="blue"/>
                            <Setter Property="Foreground" Value="yellow"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>