WPF模拟可扩展的工具栏
来源:互联网 发布:杨辉三角java代码递归 编辑:程序博客网 时间:2024/06/05 09:16
最近做一个项目,里面涉及到了一些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
/// 控制工具栏是否展开 ,如果在添加其他的工具栏,只需要判断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
- WPF模拟可扩展的工具栏
- 改善Flash IDE想法记录:可扩展的工具栏
- 模拟jquery的javascript自定义可扩展插件
- 扩展WPF的Slider
- 如何制作可随处拖放的工具栏
- 可扩展的对话框
- 可扩展的设计
- 可扩展的listview
- 可扩展的popUpwindow
- 可扩展的listview
- 可扩展的popUpwindow
- 可扩展的对话框
- 模拟MAC电脑工具栏效果的menu
- wpf imageBrush的扩展贴图
- WPF菜单与工具栏
- linux下,qemu模拟Zynq-7000 EPP可扩展处理平台的搭建过程
- WPF工具栏图标托盘图标的添加方法
- 自制可浮动工具栏
- JSP页面弹出层
- Ubuntu启用root账户
- 人生十年
- WPF读写excel的完整示例-excel文件合并工具
- Sql Server2000建库
- WPF模拟可扩展的工具栏
- macos X 使用小技巧
- 对比Windows和Linux两系统的动态库
- WPF中的对话框(Dialog)
- ubuntu10.04 android环境搭建
- c语言变参
- 创业分析
- Python核心编程读书笔记(4)
- 修复WPF Silverlight ListBox控件的一个Bug