WPF制作带居中三角形指示的Tooltip样式的Tooltip
本文所要实现的目标样式如下图。
可以看到这个Tooltip能够分解为一个 三角形 和一个 圆角矩形 ,而且三角形要居中显示。经过在网上的充分搜索,没有找到可以直接使用的解决方案,那么就自己动手设计一个。
布局框架
既然要居中显示一个三角形,最方便的应该就是Gird布局了。因此使用XAML创建一个Grid布局。
1 |
<Grid x:Name="g"> |
由于三角形和圆角矩形在某种程度上说是结合在一起的,因此无需设置行和列。所以这里使用一个
Border
来布局也是可以的。
内部布局
我们希望使用三角形“盖住”一部分圆角矩形的边框,因此需要将三角形放置在圆角矩形的下方,才能实现遮盖的效果。 除此之外还有以下要求:
-
采用
Canvas
面板来绘制三角形,此面板需要水平居中对齐、垂直顶部对齐;假设三角形高为6,宽为12,为等腰三角形。 -
采用
Border
控件实现圆角矩形,需要有一定边框宽度和颜色,水平拉伸、垂直拉伸,且与Grid
面板的上边缘有一定的边距,边距大小略小于三角形高,这样可以让三角形遮盖一段边框。
1 |
<Grid x:Name="g"> |
三角形绘制
1 |
<Polygon Points="0,6 6,0 12,6" StrokeThickness="0" Fill="White"/> |
1 |
<Polyline Points="0,6 6,0 12,6" |
圆角矩形的设置
圆角矩形样式较好设置。内容的设置可以使用
ContentPresenter
,使得在使用时可以直接使用XAML代码来设置内容。该Presenter设置为水平居中、垂直居中即可。
1 |
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/> |
整体代码
1 |
<Grid x:Name="g"> |
可以将此段代码放置在自定义Tooltip样式的
Template
属性值下,实现通过样式进行设置。即
1 |
<Style x:Key="FGisToolTipStyle" TargetType="ToolTip">
|