c# - 为什么我的文本框对 ControlTemplate 的样式中的 IsMouseOver 没有反应

标签 c# .net wpf mvvm resourcedictionary

所以我试图对我的文本框进行一些样式设置,这个想法是我想在将鼠标悬停在文本框上时设置 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>

最佳答案

您缺少 TargetNameBorderThickness :

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

相关文章:

WPF slider 如何以编程方式设置最小值/最大值?

c# - 使用 Twitterizer 发布 Twitter 更新

c# - GraphQL .NET 上部分更新突变的空字段

c# - C#获取xml文件中重复节点的信息

具有数据结构(字典、列表等)的 C# .NET 内存管理

wpf - 无法转换值 ''。具有无效的 SelectedValue 和空源

c# - String.Replace 似乎没有用空字符串替换括号

c# - 在处理 C# Outlook 之前按接收时间对电子邮件进行排序

c# - 使用 asp.net 成员(member)提供程序如何检查用户是否已注册?

c# - 将 WPF 样式应用于 UserControl 中的边框