天天看点

WPF基础

WPF基础

WPF的5种绑定模式(mode) WPF的绑定模式(mode)是枚举的 枚举值共有5个

1:OneWay(源变就更新目标属性)

2:TwoWay(源变就更新目标并且目标变就更新源)

3:OneTime(只根据源来设置目标,以后都不会变)

4:OneWayToSource(与OneWay相反)

5:Default(可以单向或双向,是靠被值定的源或目标是否有get或set来指定的) 所以绑定的话是需要选上面5个中的一个模式的,根据你的需要来选择,不选的话就会自 动选择第五个的。

或者: 1:OneWay Source影响着Target,但是Target却影响不到Source。 2:OneWayToSource Target影响Source,而Source却影响不到Target。 3:TwoWay Source与Target相互影响。 4:OneTime 在OneWay的基础上延伸了一个OneTime,仅绑定一次。如果大家属性Jquery 中的one函数我想就可以不用表述了。

WPF Inspector是一个新的WPF辅助工具,我们可以通过这个工具来观察WPF程序生成的逻辑树与视 觉树

WPF启动程序的根元素均为Application 逻辑树与XAML的布局结构是相同的 视觉树是根据控件的模板来呈现的,我们很难猜测视觉树的结构,因为控件还可以自定义模板 我们可以看到逻辑树上的元素一个视觉树局部元素的一个组合,比如Button,由三个元素组 成,ButtonChrome,ContentPresenter,TextBlock

与ASP.NET服务器控件比较(控件为逻辑 树,HTML为视觉树) 如果你没有接触过ASP.NET的话,可以略过这部分. 如果你理解ASP.NET控件的话,那么理解起来会更加容易. ASP.NET的服务器控件是一个逻辑树,一个服务器控件由若干的HTML组成,但我们知道我们是无法在 服务器端知道HTML代码的,即ASP.NET没有视觉树的概念. 这个应该比较容易理解吧。

与JavaScript客户端控件比较(一个根逻辑 树,HTML为视觉树) 如果你用过jQuery等前端js库的话,比如Tab的运用,一句简单的话就可以创建一堆HTML出来,Tab本身 则是一个控件,但其本身没有逻辑树的概念 以上两者是web服务器端与客户端的比较,由于两者状态无法共享,在交互方面没有客户端来的方便.所 以WPF的逻辑树与视觉树概念并不是新的概念.

为WPF创建一个新控件是非常简单的,一般有以下两种方式 1.采用用户控件:

2.采用模板:

<ContentControl.ContentTemplate>

</ContentControl.ContentTemplate>