简而言之:我有一个窗口,在其中的ListBox中显示了一堆图表。当鼠标经过LineSeries的图表时,会有一条线跟随数据点(与数据点位置对齐)。在那条线附近,我通过弹出窗口展示了有关这些数据点的信息。
到目前为止还不错。问题是当我试图将鼠标移动到工具提示上时,弹出窗口开始闪烁(就像处于打开/关闭循环中一样)。我已经在弹出窗口和子元素上设置了IsHitTestVisible="False"。
作为一个临时解决方案,弹出窗口会“离开”光标的路径,如下所示:
...但这几乎是“难以理解的”。
现在的问题是:发生了什么?为什么当鼠标在其上时,弹出窗口开始闪烁。
欢迎任何反馈意见。
PS. 工具提示的XAML(它是在代码中创建的,但这里是它):
图表的DataContext被数据绑定到一个类,还实现了一些通过icommands实现的图表事件。弹出窗口是在该类的构造函数中创建的。
在MouseMoveCommand中,弹出窗口的子元素被创建:
到目前为止还不错。问题是当我试图将鼠标移动到工具提示上时,弹出窗口开始闪烁(就像处于打开/关闭循环中一样)。我已经在弹出窗口和子元素上设置了IsHitTestVisible="False"。
作为一个临时解决方案,弹出窗口会“离开”光标的路径,如下所示:
...但这几乎是“难以理解的”。
现在的问题是:发生了什么?为什么当鼠标在其上时,弹出窗口开始闪烁。
欢迎任何反馈意见。
PS. 工具提示的XAML(它是在代码中创建的,但这里是它):
图表的DataContext被数据绑定到一个类,还实现了一些通过icommands实现的图表事件。弹出窗口是在该类的构造函数中创建的。
ppchart = New Popup() With {.AllowsTransparency = True, .IsHitTestVisible = False,.StaysOpen = True}
在MouseMoveCommand中,弹出窗口的子元素被创建:
Dim ppCont As XElement = <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" IsHitTestVisible="False" VerticalAlignment="Top">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Rectangle Opacity="0.5" Grid.RowSpan="2" IsHitTestVisible="False" StrokeThickness="0" RadiusX="2" RadiusY="2" Fill="#FFBABABA"/>
<TextBlock Text="{Binding Over, StringFormat=HH:mm}" FontSize="9" TextAlignment="Center" FontFamily="Segoe UI" IsHitTestVisible="False" Margin="1"/>
<ListBox x:Name="listBox" ItemsSource="{Binding Points}" Background="{x:Null}" BorderBrush="{x:Null}" FontSize="8" Margin="1,0,1,1" Grid.Row="1" IsHitTestVisible="False" IsTextSearchEnabled="False" HorizontalAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
<Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Rectangle Fill="{Binding Culoare}" Width="3" HorizontalAlignment="Left" Margin="1" IsHitTestVisible="False"/>
<TextBlock Text="{Binding Operation}" HorizontalAlignment="Stretch" IsHitTestVisible="False" Grid.ColumnSpan="1" Grid.Column="1"/>
<TextBlock Text="{Binding points.Value}" HorizontalAlignment="Stretch" Grid.Column="2" TextAlignment="Right" IsHitTestVisible="False"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
ppchart.Effect = New Effects.DropShadowEffect() With {.Opacity = 0.5, .BlurRadius = 5, .Direction = 80, .Color = Colors.Black}
ppchart.Child = CType(XamlReader.Load(New XmlTextReader(New StringReader(ppCont.ToString))), UIElement)
重新编辑:这是它的外观。