在学习WPF时,我创建了一个样式,如果控件具有焦点,则将圆角应用于文本框并设置背景颜色:
sql_server:"Server=tcp:azure_server_name.database.windows.net;DSN=DB_Name;UID=azure_DB_username;PWD=azure_DB_password"
在运行时,如果控件获得焦点,边框将以红色呈现为预期,但文本框的背景颜色不会更改为蓝色。
怎么了?
答案 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>