这种应用场景其实很多,比如游戏中装备/魔法的选择菜单,这里借用了"深蓝色右手"的一张图
再比如聊天室中的文本颜色设置
虽然sl的ToolTipService.ToolTip属性可以设置任何对象,比如下面这样
12 3 94 85 6 7
但是有一个问题,鼠标一旦离开对象,tooltip就消失了,没办法在tooltip工具栏上点选操作。
所以得换一种思路,可以借助VSM方便的实现,设置好tooltip工具条后,定义二个基本的状态:Enter ,Leave 即可,Enter状态中设置tooltip对应的对象显示,Leave状态中设置tooltip对象隐藏
示例代码(Xaml):
Visible Collapsed
后端代码:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
namespace tooltipTest
{
public partial class MainPage : UserControl
{
List lstTipsData;
public MainPage()
{
InitializeComponent();
//初始化数据
lstTipsData = new List() {
new FillColor(){ Color = new SolidColorBrush(Colors.Red), Name="红色"},
new FillColor(){ Color = new SolidColorBrush(Colors.Blue), Name="蓝色"},
new FillColor(){ Color = new SolidColorBrush(Colors.Green),Name="绿色"},
new FillColor(){ Color = new SolidColorBrush(Colors.Magenta), Name="洋红"},
new FillColor(){ Color = new SolidColorBrush(Colors.Black), Name="黑色"},
new FillColor(){ Color = new SolidColorBrush(Colors.Orange), Name="橙色"},
};
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
itemsTip.ItemsSource = lstTipsData; //数据绑定
}
private void GoToEnter(object sender, MouseEventArgs e)
{
VisualStateManager.GoToState(this, "Enter", false);
}
private void GoToLeave(object sender, MouseEventArgs e)
{
VisualStateManager.GoToState(this, "Leave", false);
}
///
/// 点击后更换颜色
///
///
///
private void ChangeColor(object sender, MouseButtonEventArgs e)
{
rColor.Fill = (sender as Rectangle).Fill;
VisualStateManager.GoToState(this, "Leave", false);
}
}
///
/// 测试实体类
///
public class FillColor
{
public SolidColorBrush Color { set; get; }
public string Name { set; get; }
}
} 


