2016-05-03 9 views
2

Ich habe ein Diagramm mit dünnen Linien als Marker, die der Benutzer über den Mauszeiger bewegen kann, um ihre Werte zu erhalten.Machen Sie Tooltip-Bereich größer als die Kontrolle

Ich möchte den Bereich, in dem der Tooltip aktiviert, größer machen, aber die tatsächliche Zeile die gleiche Größe behalten, wie es ziemlich schwierig für die Verwendung tatsächlich ist, über zu schweben.

Ich habe auch eine Zeile, die der Benutzer herumziehen kann und es ist sehr schwierig, den genauen Punkt zum Klicken und Ziehen zu bekommen.

Dies ist meine Vorlage für den Marker, aber ich bin mir nicht sicher, wie dieses Ziel zu erreichen, kann mir jemand in die richtige Richtung zeigen?

<Geometry x:Key="LineGeometry">M 0,0 L 5,0 L 5,15 L 0,15 Z</Geometry> 
<DataTemplate> 
     <!-- Define the template for the actual markers --> 
     <Path Width="10" 
       Height="10" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Data="{StaticResource LineGeometry}"     
       Stretch="Fill" 
       Stroke="{StaticResource BlackBrush}" 
       StrokeThickness="0.5"> 
      <Path.ToolTip> 
       <!-- Lots of tooltip definition stuff --> 
      </Path.ToolTip> 
     </Path> 
</DataTemplate> 
  • Visual Studio 2015
  • WPF
  • C#
  • Infragistics XamDataChart

Antwort

2

Wenn ich Sie richtig verstehe, Sie wollen einfach nur Tooltip zeigen in Ihrem Rechteck, das durch Pfad dargestellt. Wenn so dass Sie nur Ihren Weg in transparenten Rand und legt Tooltip Ränder wickeln können:

<Border Background="Transparent"> 
     <Path Width="10" 
       Height="10" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Data="{StaticResource LineGeometry}" 
       Stretch="Fill" 
       Stroke="Black" 
       StrokeThickness="0.5"></Path> 
     <Border.ToolTip> 
      <TextBlock Text="Tooltip" /> 
     </Border.ToolTip> 
    </Border> 
2

Ihr eigentliches Problem ist, dass Sie nicht die Fill property von Path verwendet haben, so dass während diese Form zu schaffen gibt buchstäblich nichts dazwischen Linien, deshalb, wenn Sie IsMouseOver Eigenschaft überprüfen, wenn Zeiger innerhalb dieses shape ist, wird es false zurückgeben. Wenn Sie jedoch Fill property angeben, wird das Ergebnis wie erwartet sein.

Verwenden Fill property wie unten und Ihre ToolTip wird visible, wenn Mouse über Path Form ist überall.

Fill="Transparent" 

So wird Ihre Ausgabe visuell nicht betroffen bekommen. Unten ist ein Beispielprogramm.

XAML:

<Window.Resources> 
    <Geometry x:Key="LineGeometry">M 0,0 L 5,0 L 5,15 L 0,15 Z</Geometry>  
</Window.Resources> 
<StackPanel> 

    <Path Width="100" 
       Height="100" 
      Name="path" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Data="{StaticResource LineGeometry}"     
       Stretch="Fill" 
       Stroke="Red" Margin="50" 
       StrokeThickness="5" 
       Fill="Transparent" 
       MouseLeftButtonDown="Path_MouseLeftButtonDown">    
     <Path.ToolTip> 
      <TextBlock Text="This is My Tooltip of Path" /> 
     </Path.ToolTip> 
    </Path> 

    <StackPanel Orientation="Horizontal"> 
     <Label Content="Is Mouse Over Path : " /> 
     <Label Content="{Binding ElementName=path,Path=IsMouseOver}" BorderThickness="0.5" BorderBrush="Black"/> 
    </StackPanel> 
</StackPanel> 

Ausgang:

ToolTip

Sorry,don't know how to capture Maus in screenshot, but mouse is in between the shape while image was captured. Remove Fill Eigenschaft from Pfad and then see the change in ouput.

Verwandte Themen