使工具提示区域大于控件

时间:2016-05-03 09:47:12

标签: c# wpf tooltip infragistics xamdatachart

我有一个用细线作为标记的图表,用户可以将鼠标悬停在其上以获取其值。

我想使工具提示激活的区域更大,但保持实际线条的大小相同,因为实际悬停时很难使用。

我还有一条线可供用户拖动,很难获得点击和拖动的精确位置。

这是我的标记模板,但我不知道如何实现这个目标,有人能指出我正确的方向吗?

<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

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您只想在由Path表示的矩形内显示工具提示。如果是这样,您可以将路径包裹在透明边框中并在边框上设置工具提示:

function getOptionDesc(o, e) { 
    var selected=o.options[o.selectedIndex].text;
    var selecteddesc=o.options[o.selectedIndex].label;
    var x = e.clientX;
    var y = e.clientY;
    var coor = "Coordinates: (" + x + "," + y + ")";
    console.log(coor); 
    if (selected!=""){ 
         //Code to display description
    }
    else{
         //code to hide description
    }
}

答案 1 :(得分:2)

您的实际问题是您没有使用Fill property Path,所以当 创建此形状时,行之间几乎没有任何内容 ,这就是为什么当IsMouseOver指针位于此Mouse内时检查shape属性,它将返回false。但是,如果您指定Fill property,结果将符合预期。

如果Fill property ToolTip超过visible形状,请使用Mouse,如下所示 Path Fill="Transparent"

<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>

因此,您的输出不会在视觉上受到影响。下面是一个示例程序。

<强> XAML:

Sorry,don't know how to capture

<强> 输出:

ToolTip

  

<强> in screenshot, but mouse is in between the shape while image was captured. Remove鼠标from填充   属性and then see the change in ouput. {路径{1}}