我将以下控件设置为WinForms元素主机的子级(WPF Interop)。当StrokeThickness设置为低值(即1)时,IsMouseOver属性似乎不一致,并且不会出现正确的样式。我确认问题不在于WinForms,因为我还测试了WPF应用程序中的功能。这引起了我的问题,因为我在自定义图表控件上使用这些矩形作为隐藏叠加层。当鼠标进入图表的某个区域时,它会突出显示。使用IsMouseOver属性时是否存在其他属性约束(即StrokeThickness)?
<UserControl.Resources>
<Style x:Key="myStyle" TargetType="{x:Type Rectangle}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Fill" Value="Gold"/>
</Trigger>
</Style.Triggers>
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Stroke" Value="Black"/>
<Setter Property="StrokeThickness" Value="10"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="Auto" Width="Auto">
<StackPanel Orientation="Horizontal">
<Rectangle Style="{StaticResource myStyle}"/>
<Rectangle Style="{StaticResource myStyle}"/>
<Rectangle Style="{StaticResource myStyle}"/>
<Rectangle Style="{StaticResource myStyle}"/>
<Rectangle Style="{StaticResource myStyle}"/>
</StackPanel>
</Grid>
答案 0 :(得分:1)
那是因为你没有为矩形设置背景(Fill
)。因此,只有在笔划超过笔划时才会考虑鼠标。将Fill
设置为null
以外的其他内容,即使它是Transparent
。
答案 1 :(得分:0)
尝试将SnapsToDevicePixels
设为true
。问题可能是您的笔划仅渲染为“半”像素,因此鼠标事件无法按预期工作。
编辑:或者,您可能希望明确将矩形背景设置为transparent
,而不是鼠标背景。