标签:
1.wpf中有两类模板,控件模板controltemplate和datatemplate都派生自Frameworktemplate。
总共有三大模板 ControlTemplate,ItemsPanelTemplate,DataTemplate。
a. ControlTemplate 主要用途是更改控件的外观。它有两个重要属性:VisualTree(视觉树)内容属性和Triggers触发器,对于触发器可以不用过多考虑,触发器可有可无。VisualTree就是呈现我们所画的控件。Triggers可以对我们的视觉树上的元素进行一些变化。
b. ItemsPanelTemplate 是个特殊的空间模板,主要用来标明多条目控件如何显示它所包含的多项数据。也可以说是指定用于项的额布局的面板。多用于多个内容控件的目标。多为Panel属性或者Panel结尾的属性。
c. DataTemplate 主要用于数据的呈现。也被称为显示绑定数据对象的模板。
2.数据绑定
WPF 里分三种:Binding,PriorityBinding,MultiBinding,这三种Binding的基类都是BindingBase,而BindingBase又继承于MarkupExtension。
常见的使用Binding方法是:
1 针对于继承于FrameworkElement控件。 SetBinding(DependencyProperty dp,String path),SetBinding(DependencyProperty dp,BindingBase binding),其中FrameworkElement中SetBinding只对DependencyProperty有效。
2 另一种是 BindingOperations.SetBinding(currentFolder,TextBlock.TextProperty,binding);
BindingOperations.SetBinding的原型是
public static BindingExpressionBase SetBinding(DependencyObject target,DependencyProperty dp,BindingBase binding)
3 清除Binding:
BindingOperations.ClearBinding(currentFolder,TextBlock.TextProperty);//删除currentFolder上的TextBlock.TextProperty绑定
BindingOperations.ClearAllBindings(currentFolder);//删除currentFolder上的所有绑定。
直接对Dependency Property赋值也可以解除binding,不过只对单向binding有效。
4.逻辑树和视觉树 视觉树时对逻辑树的扩展
逻辑树是视觉树的子集
WPF通过逻辑树处理依赖属性继承和资源的问题,视觉树来处理事件路由、渲染、资源定位等
逻辑树可以认为是XAML所见的,而视觉树包含了XAML元素内部的结构
5.属性变更通知 IpropertyChanged和ObservableCollection<T>
a. INotifyPropertyChanged向客户端发出某一属性值更改的通知。
b. ObservableCollection<T>类,它是实现 INotifyCollectionChanged 接口的数据集合的内置实现。表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知
6.ResourceDictionary
提供了包含元素和WPF应用程序的其他元素使用的Wpf资源的一个哈希表/字典的实现,实现了应用程序的资源的共享
、、、、待解决的问题
7.wpf和winform的区别
路由事件 命令(Command)
标签:
原文地址:http://www.cnblogs.com/mercedes-Benz/p/5398248.html