将鼠标悬停在控件模板子项的填充或边距上时不会触发 IsMouseOver
IsMouseOver Is Not Triggered When Hovering Over The Padding Or The Margin Of A Control Template Children
问题是当悬停在内部控件模板子项的填充或边距上时,不会触发 IsMouseOver 触发器。
我有这个控件模板。我希望在我将鼠标悬停在该控件模板上时触发 IsMouseOver 触发器。只有当我将鼠标悬停在文本或边框上时它才有效。
<TextBox>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Cursor" Value="IBeam"/>
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Margin="0 35 0 0"
Padding="0 0 0 12"
BorderThickness="0 0 0 3"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<ScrollViewer x:Name="PART_ContentHost"
FontSize="22"
Foreground="{StaticResource GreyColor}"/>
<TextBlock Text="Email"
FontSize="22"
Foreground="{StaticResource GreyColor}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="DodgerBlue"/>
<Setter Property="Foreground" Value="DodgerBlue"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
将边距从边框移动到网格,并在边框上设置背景:
<Border Padding="0 0 0 12" BorderThickness="0 0 0 3"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="0 35 0 0">
<ScrollViewer x:Name="PART_ContentHost"/>
<TextBlock Text="Email" FontSize="22"
Foreground="{TemplateBinding Foreground}"/>
</Grid>
</Border>
问题是当悬停在内部控件模板子项的填充或边距上时,不会触发 IsMouseOver 触发器。
我有这个控件模板。我希望在我将鼠标悬停在该控件模板上时触发 IsMouseOver 触发器。只有当我将鼠标悬停在文本或边框上时它才有效。
<TextBox>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Cursor" Value="IBeam"/>
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Margin="0 35 0 0"
Padding="0 0 0 12"
BorderThickness="0 0 0 3"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<ScrollViewer x:Name="PART_ContentHost"
FontSize="22"
Foreground="{StaticResource GreyColor}"/>
<TextBlock Text="Email"
FontSize="22"
Foreground="{StaticResource GreyColor}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="DodgerBlue"/>
<Setter Property="Foreground" Value="DodgerBlue"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
将边距从边框移动到网格,并在边框上设置背景:
<Border Padding="0 0 0 12" BorderThickness="0 0 0 3"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid Margin="0 35 0 0">
<ScrollViewer x:Name="PART_ContentHost"/>
<TextBlock Text="Email" FontSize="22"
Foreground="{TemplateBinding Foreground}"/>
</Grid>
</Border>