WPF模拟可扩展的工具栏

 最近做一个项目,里面涉及到了一些WPF的东西开发的节目,其中的一个小小功能就是让工具栏,这些东西都不难,有些东西可以在微软的基础之上来做,但是怎样工具栏像VS中的工具栏可以悬浮,可以收缩呢?于是开始了尝试的旅途。

  first:既然可以停靠,那么我们就要有一个触发这个事件的Button

  second: 既然可以显示停靠和收缩状态,则少不了图片的交替显示和控制变量 bool isExpand

  third: 如果不是停靠,则可以通过鼠标的移动来触发工具栏的收缩,即鼠标移动,工具栏展开,鼠标移出,工具栏收缩

  就这些东西够吗?差不多了,在来个容器吧!StackPanel足以。

  #region 扩展与展开工具栏和属性栏

  bool isExpend = true;//控制工具栏是否展开,True ,展开 ,false 关闭

/// <summary>
/// 控制工具栏是否展开 ,如果在添加其他的工具栏,只需要判断Button的名字,既可以在这里实现效果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExpendOrClose_Click(object sender, RoutedEventArgs e)
{
if (isExpend)
{
ToolBox.Width = 1;//或设置工具栏隐藏
col1.MaxWidth = 25;
txbSpace.Width = 1;//这个是用来控制图片显示位置的东西
btnExpendOrClose.Background = new ImageBrush(new BitmapImage(new Uri("../../Images/expand.jpg", UriKind.RelativeOrAbsolute)));
}
else
{
ToolBox.Width = 200;
col1.MaxWidth = 205;//控制容器的大小
txbSpace.Width = 205-25;
btnExpendOrClose.Background = new ImageBrush(new BitmapImage(new Uri("../../Images/lock.jpg", UriKind.RelativeOrAbsolute)));
}
isExpend = !isExpend;
}
/// <summary>
/// 鼠标进入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StackPanel_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
e.Handled = false;
if (!isExpend)
{
ToolBox.Width = 200;
col1.MaxWidth = 205;
txbSpace.Width = 205 - 25;
}
}
/// <summary>
/// 鼠标移出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StackPanel_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
e.Handled = false;
if (!isExpend)
{
ToolBox.Width = 1;
col1.MaxWidth = 25;
txbSpace.Width = 1;
}
}
#endregion

本文来自山石晓月的博客,原文地址:http://blog.sina.com.cn/s/blog_4c0e8aa20100rh04.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值