WPF面试准备

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)

笑语欢歌水云间, 谈古论今郁作烟。 人存一世数十载, 生则壮志冲九天!
原文地址:https://www.cnblogs.com/mercedes-Benz/p/5398248.html