You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Actipro v22中TimeSpanEditBox的Style.Triggers未按预期生效

解决Actipro TimeSpanEditBox鼠标悬停背景色不生效问题

问题原因

Actipro的TimeSpanEditBox默认控件模板中,实际接收鼠标交互的是内部嵌套的文本框元素,直接在控件级别设置IsMouseOver触发器修改Background,无法覆盖内部元素的默认样式,因此看不到预期效果。

解决方案1:通过TextBoxStyle修改内部文本框的悬停样式

直接为TimeSpanEditBox的内部文本框指定样式,针对其IsMouseOver状态设置背景色,这是轻量化的快速解决方式:

<Window.Resources>
    <Style x:Key="InnerTextBoxStyle" TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Green" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <Style x:Key="TimeSpanEditBoxStyle" TargetType="{x:Type editors:TimeSpanEditBox}">
        <Setter Property="TextBoxStyle" Value="{StaticResource InnerTextBoxStyle}" />
    </Style>
</Window.Resources>

<Grid>
    <editors:TimeSpanEditBox Style="{StaticResource TimeSpanEditBoxStyle}" Width="100" Height="35" />
</Grid>

解决方案2:重写控件模板(深度自定义)

如果需要完全把控件外观的控制权,可重写TimeSpanEditBox的控件模板,在VisualStateManager中修改MouseOver状态的背景:

<Style x:Key="TimeSpanEditBoxStyle" TargetType="{x:Type editors:TimeSpanEditBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type editors:TimeSpanEditBox}">
                <Border x:Name="Border" 
                        Background="{TemplateBinding Background}" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="MouseOver">
                                <Storyboard>
                                    <ColorAnimation 
                                        Storyboard.TargetName="Border" 
                                        Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
                                        To="Green" 
                                        Duration="0:0:0.1" />
                                </Storyboard>
                            </VisualState>
                            <!-- 保留Disabled、Focused等其他默认状态 -->
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <TextBox x:Name="PART_TextBox" Style="{TemplateBinding TextBoxStyle}" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

注意事项

  • 确保XAML中已正确引用Actipro Editors命名空间:xmlns:editors="http://schemas.actiprosoftware.com/winfx/xaml/editors"
  • 方案1适合仅修改悬停背景的简单场景,方案2适合需要深度定制控件整体外观的需求

内容的提问来源于stack exchange,提问作者Nehorai Raphael Elbaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:31:28