WPF开发,界面处理首选Blend,如果你开发了两年WPF都没接触过blend(当然这种几率不高),或者你刚接触WPF,可以考虑使用Blend,这货也算得上一个神器,上手也不难。以下有两位讲得不错,大家可以翻翻。

  然而在使用的过程中也遇到一些问题、发现了一些技巧,这里整理了下。

1.Blend里窗体宽高设为1024*768含义

 = 窗口的两条边框+内容

   = 窗口标题栏+窗口底边框+系统任务栏
 

  而且,在win7里最大化窗口时会隐藏窗口左右两边和底边的

2.Margin 某个控件的周围与它的直接父容器的间距,布局里经常用到

  Margin 0,0,0,0分别是左,上,右,下 ← ↑ → ↓

3.同样的一个文本控件,字号在VS2010里默认是12号,而在Blend4里却是9号

  这个问题是由于两者字体默认单位不一样,Blend4里默认的单位是英镑,工具→选项→单位 英镑改为像素即可一致。

4.用户控件添加到其他界面后有黄色叹号和虚框

    在项目里生成项目/重新生成项目即可。

5.鼠标移到Grid边框上时不可以选中整行或者整列

  工具→选项→美工板→布局→使用网格布局模式 勾选即可。

6.Blend4嵌入字体后每次运行程序都会在C盘里生成大量文件占用空间

  这个问题一般出现在嵌入字体后,每次跑程序都会在C:\Users\XXX\AppData\Local\Microsoft\Expression\Blend,XXX是用户名,这是Win7的路径,XP可能在其他路径下,目前没有找到什么办法可以阻止,只能手动去删除。

7.blend打开项目、xaml文件一直未响应、打开出错

  是因为这个界面xaml文件里引用了一个类文件(可能是一个资源类,DateContext、或者转换器、或自定义控件),初始化时需要连接数据库,没法连接,所以不要在xaml里引用,在后台里写后行了。
    blend打开项目一直未响应:某个项目下的debug文件夹内文件错误,删除该debug文件夹或者清理下解决方案。其他解决方法:先打开blend或者只打开blend 或者不要用blend跑代码。
    blend打开xaml文件一直未响应:该xaml文件内嵌套的某个UserControl可能在Loaded事件里写了东西,窗体在打开(不管程序有没有跑起来)会去执行该UserControl的loaded事件来初始化这个UserControl,在xmal里移除该UserControl即可,然后再优化loaded事件。或者如下来处理:
//在WPF中
using System.ComponentModel; if (!DesignerProperties.GetIsInDesignMode(this)) {
//...
} //在WinForm开发中,一般会在窗体或者UserControl中判断当前是否为设计状态,如:
if (!this.DesignMode)
{
//
}

  这个方法可以起作用。不过有些东西是写在ViewModel里的,不涉及UI的,这样写会破坏结构。

8.怎样画一条闭合的路径

  • 键盘按P切换到路径选中状态,然后先选中起始点点,按住Shift键不放,鼠标移到另外一个需要连接的点上,等鼠标变成一个圆圈就可以点下去连接上了。
  • 如果是两条不相干的路径,则要先把两条路径同时选中,再进行上面的操作。或者也可以选把两条路径生成一条复合路径再操作。

9.如何画正圆、同心圆

  按住Alt在拖动就可以画个同心的控件

  按住Shift时,可以画出正的控件,即同宽同高
  两个都按住效果可以叠加

10.Blend的路径相减是什么意思

  选中要相减的路径,最后右击的那个路径是被减数A,其他的是减数B,最后结果=被减数-减数

  即结果= A - B
  结论:两路径相减,要保留哪个就在哪个上面右击

11.Blend的触发器层

  如果你的触发器里是这样的顺序

  

  那么控件会先触发MouseOver效果,然后按下的时候,会保持Over的效果,累加按下的效果,如果IsPressed在下面,那么按下的时候不会累加效果,会恢复到原样再执行按下效果。可见,Blend的触发器层是按照现实顺序来的,先触发over,那么就先创建over属性,再创建pressed属性。

12.如何让Grid某列Collapsed时自动释放空间

  使用Grid分为两列,注意:让要自动释放空间的那列权值为0,另一列为1,然后再把为0的那列改成Auto模式,这样当这列里的内容Collapsed时就会释放空间,而另一列自然就填满了。

  在布局的时候,先随便分成两列,然后分别在各自列里布局,好了之后,两列权值分别设成1和0,然后0的那列模式改为Auto,注意最后成型时把0那列的visibility设成Collapsed。利用这个特性可以做自动释放的动画,而不必使用StackPanel来帮你释放空间了。

13.如何快速布局

  方法一:可以选中要布局的对象右键→分组,选一个容器就会直接把选中的对象放到对应的容器里。有时候图省事两个布局差不多的界面会直接复制粘贴,这个时候要注意,在Blend里:

用分组的话内容不会出现-margin
用剪切粘贴的话可能会出现-margin
  方法二:如果我想在一个border里放个充满的grid,你是否会选中这个border,然后去工具栏里选中grid,然后到border里拖一个出来,发现没充满,然后再一个一个设margin?从现在开始,你不用这样做了,在工具栏里选中grid后,直接双击,就会在当前选中的容器里放一个充满的grid,不信你可以试试。

14.Blend4里没有ContextMenu,即右键快捷菜单,所以没法在Blend里编辑ContextMenu的样式

15.尽量不要使用模糊效果,这东西会让程序卡得抓狂

16.巧妙使用“重置”

  主要用在设置Margin的时候,Margin有4个值,一个一个设施相当麻烦的,重置一下,全部置为0,相当方便。

  重置前,点白色的方块即可重置

  重置后

  有木有一键还原的错觉。有的地方使用重置也可以省去不少麻烦,只要你善于发现。

17.如何快速拖动界面

  你还在用滚动条拖界面吗,其实只需要按住空格键,鼠标变成一只小白手之后就可以随便你拖了。

18.如何快速复制一个控件到旁边

  如果你觉得Ctrl+C然后Ctrl+V已经很快了,我再告诉你一个更快的方法:按住Alt直接拖动要复制的控件到合适的位置,松开键盘和鼠标,就能很快的复制一个控件了。

使用Blend的一些问题和技巧的更多相关文章

  1. Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效

    当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素.然而在设计过程中可能会出现许多的问题,比如当前绘制了一个 ...

  2. 【全面解禁!真正的Expression Blend实战开发技巧】第十章 FluidMoveBehavior完全解析之三飞出ListBox吧

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第十章 FluidMoveBehavior完全解析之三飞出ListBox吧 刚才有人说我的标题很给力,哈哈.那这个标题肯定更给力了 ...

  3. 【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel)

    原文:[全面解禁!真正的Expression Blend实战开发技巧]十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel) 写这篇文 ...

  4. 【全面解禁!真正的Expression Blend实战开发技巧】第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条 这一章讲解FluidMoveBehavior的另一个应用, ...

  5. 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...

  6. 【全面解禁!真正的Expression Blend实战开发技巧】第八章 FluidMoveBehavior完全解析之一漂浮移动

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第八章 FluidMoveBehavior完全解析之一漂浮移动 好久没更新博客了,今天如果没急事,准备连发三篇,完全讲解Blend ...

  7. 【全面解禁!真正的Expression Blend实战开发技巧】第四章 从最常用ButtonStyle开始 - PathButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第四章 从最常用ButtonStyle开始 - PathButton 上一篇我们介绍了TextButton,但为了追求界面的张力, ...

  8. 【全面解禁!真正的Expression Blend实战开发技巧】第五章 从最常用ButtonStyle开始 - ImageButton

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第五章 从最常用ButtonStyle开始 - ImageButton 本章围绕ImageButton深入讨论,为什么是Image ...

  9. 【全面解禁!真正的Expression Blend实战开发技巧】第二章 你好,UI设计师

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第二章 你好,UI设计师 你好,UI设计师 曾几何时我从没想过要与艺术家打交道,但是Silverlight改变了这一切.UI设计师 ...

随机推荐

  1. 重置 linux系统后要配置的基本组件操作

    1.安装jdk https://www.cnblogs.com/shihaiming/p/5809553.html 2.安装mysql 3.安装tomcat

  2. Python网络编程中的服务器架构(负载均衡、单线程、多线程和同步、异步等)

    这篇文章主要介绍服务器架构. 网络服务需要面对两个挑战. 第一个问题是核心挑战,要编写出能够正确处理请求并构造合适响应的代码. 第二个挑战是如何将网络代码部署到随系统自动启动的Windows服务或者是 ...

  3. vue or react mvvm里的文字上下滚动

    1.jQuery 时候实现 上下滚动很简单,基本上一个animateTop就可以了 2. vue等MVVM就有些麻烦了,因为不推荐操作DOM,专注于数据 我们可以使用 css3 transition: ...

  4. Mybatis 使用注解和Provider类实现动态条件查询

    1.注解内拼写 Mybatis SQL 脚本 @Repository public interface CustomerFeedMapper extends BaseCrudMapper<Cus ...

  5. Spring 整合 Quartz 实现动态定时任务(附demo)

    最近项目中需要用到定时任务的功能,虽然Spring 也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之后,决定整合更为专业的Quartz来实现定时任务功能. 普通定时任务 首先 ...

  6. 9、数值的整数次方------------>剑指offer系列

    数值的整数次方 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 这道题逻辑上很简单,但很容易出错 关键是要考虑全面,考虑到所有情况 ...

  7. base-command

    命令分类 自带命令 工具型 文件系统 第三方命令 CLI GUI 操作文件系统 pwd(print working directory) ls(list files) ls 列出当前目录文件 ls 目 ...

  8. web APP到底和跨平台APP开发有什么区别?

    什么是web app? WebApp是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能. 说的浅显易懂点儿就是因为移动互联网特别火爆,很多企业公司也都想拥有一个属于自己的ap ...

  9. win7双网卡走哪个网卡路由设置

    有没有软件能做这个我还真不知道.说说我的做法吧: 单位里无线是可以访问Internet的,有线是用来访问公司内部系统的. 默认的54M无线网络和100M的有线网络,系统在选择默认路由的时候肯定是选择有 ...

  10. 【LeetCode】9 Palindrome Number 回文数判定

    题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...