所以我试图对我的文本框进行一些样式设置,这个想法是我想在将鼠标悬停在文本框上时设置 BorderBrush 的样式,但由于某种原因它没有更改边框,所以我也尝试更改背景,同样的事情在那里.那时我意识到它对 IsMouseOver
没有反应但它确实设置了背景和我所做的一切,这只是事件IsMouseOver
它没有反应。
控制
<TextBox Width="700"
Height="340"
HorizontalAlignment="Right"
Margin="0,0,230,140"
Foreground="#8bf502"
TextWrapping="Wrap"
Style="{DynamicResource TextboxStyle}"/>
样式
<Style TargetType="{x:Type TextBox}" x:Key="TextboxStyle">
<Setter Property="OverridesDefaultStyle" Value="True"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Background="#424242">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"></ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Orange"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
最佳答案
您缺少 TargetName
和 BorderThickness
:
<Style TargetType="{x:Type TextBox}" x:Key="TextboxStyle">
<Setter Property="OverridesDefaultStyle" Value="True"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Name="border" BorderThickness="2" Background="#424242">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"></ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Orange"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
没有
Border
除非你设置 BorderThickness
它的属性不是0
.
关于c# - 为什么我的文本框对 ControlTemplate 的样式中的 IsMouseOver 没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155964/