使工具提示区域大于控件
Make tooltip area bigger than the control
我有一个带有细线作为标记的图表,用户可以将鼠标悬停在上面以获取它们的值。
我想使工具提示激活的区域更大,但保持实际行的大小相同,因为用户很难将鼠标悬停在上面。
我还有一根线,用户可以拖动它,但很难找到精确的位置来点击和拖动。
这是我的标记模板,但我不确定如何实现这个目标,谁能指出正确的方向?
<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
如果我没理解错的话,您只是想在由 Path 表示的矩形内显示工具提示。如果是这样,您可以将路径包裹在透明边框中并在边框上设置工具提示:
<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>
你的实际问题是你没有使用 Path
的 Fill property
,所以当 创建这个形状时,线条之间几乎没有任何东西,这就是为什么当 Mouse
指针在此 shape
内时检查 IsMouseOver
属性,它将 return false
.但是,如果您指定 Fill property
结果将如预期。
如下使用Fill property
,如果Mouse
结束Path
,你的ToolTip
将是visible
任意形状.:
Fill="Transparent"
因此您的输出不会在视觉上受到影响。下面是一个示例程序。
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>
输出:
Sorry,don't know how to capture
Mousein screenshot, but mouse is in between the shape while image was captured. Remove
Fill
propertyfrom
Pathand then see the change in ouput.
我有一个带有细线作为标记的图表,用户可以将鼠标悬停在上面以获取它们的值。
我想使工具提示激活的区域更大,但保持实际行的大小相同,因为用户很难将鼠标悬停在上面。
我还有一根线,用户可以拖动它,但很难找到精确的位置来点击和拖动。
这是我的标记模板,但我不确定如何实现这个目标,谁能指出正确的方向?
<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
如果我没理解错的话,您只是想在由 Path 表示的矩形内显示工具提示。如果是这样,您可以将路径包裹在透明边框中并在边框上设置工具提示:
<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>
你的实际问题是你没有使用 Path
的 Fill property
,所以当 创建这个形状时,线条之间几乎没有任何东西,这就是为什么当 Mouse
指针在此 shape
内时检查 IsMouseOver
属性,它将 return false
.但是,如果您指定 Fill property
结果将如预期。
如下使用Fill property
,如果Mouse
结束Path
,你的ToolTip
将是visible
任意形状.:
Fill="Transparent"
因此您的输出不会在视觉上受到影响。下面是一个示例程序。
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>
输出:
Sorry,don't know how to capture
Mousein screenshot, but mouse is in between the shape while image was captured. Remove
Fill propertyfrom
Pathand then see the change in ouput.