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
相关产品推荐
相关产品推荐

