两个grid具有相同的大小。
单元格大小相同。
基于坐标的布局。
控制canvas面板中元素的层叠方式。
接收手写笔输入。
设置grid列的各种属性
button自动的改变长度使窗口适应对应用程序的修改。
依赖项属性是标准.net属性的全新实现
定义依赖项属性的字段的名称是在普通属性的末尾处加上单词’Property’。
包括创建FrameworkPropertyMetadata对象,和调用DependencyProperty.Register()静态方法注册属性
使用传统的.NET属性封装WPF依赖属性项。
属性变化响应,属性值绑定(第八章),编写自动改变的触发器(第11章)。
一些具有不同继承层次的类可能会共享同一依赖项属性。
WPF用两种方法阻止非法值:
ValidateValueCallback,接收或拒绝新值,通常该函数用于捕获违反属性约束的明显错误。
CoerceValueCallback:通常用于处理为相同对象设置的依赖项属性值相互冲突的问题
处理相互关联的属性,WPF会保存设置的精确值,读取属性时会评估使用哪个属性。
事件由只读的静态字段表示,然后EventManager.RegisterRoutedEvent()注册。
共享路由事件的定义
RaiseEvent()方法负责为每个已经通过AddHandler()方法注册的调用程序引发事件。
在XAML标记添加事件特征。
img.MouseUp += new MouseButtonEventHandler(img_MouseUp);
img.MouseUp += img_MouseUp;
上面的代码依赖于事件封装器,事件封装器调用UIElement.AddHandler()方法支持所有WPF事件,也可自行调用这个方法
img.AddHandler(Image.MouseUpEvent, new MouseButtonEventHandler(img_MouseUp) );
直接路由事件
冒泡路由事件:向上传递
隧道路由事件:向下传递,在事件到达恰当的控件之前为预览事件提供了机会。
EventManager.RegisterRoutedEvent()注册时,需要传递一个RoutingStrategy。
RoutedEventArgs的属性:
Source 指示引发了事件的对象
originalSource最初是什么对象引发了事件
RoutedEvent 通过事件处理程序为触发的事件提供RoutedEvent对象
Handled 允许终止冒泡或隧道
提示,大多数WPF事件没有提欧共CLick事件,而是提供了MouseUp和MouseDown事件。
AddHandler提供了重载,第三个参数为true时,即使设置了handled标志,也将接收到事件。
通过处理更高层次元素的Click事件,处理所有按钮的Click事件。
以单词Preview开头
所有元素的生命周期事件:initialized,Loaded,Unloaded。
XAML负责调用BeginInit,完成初始化后调用EndInit方法,引发Initialized事件。完成初始化过程后,引发loaded事件。
Window类的生命周期事件:
SourceInitlized,ContentRenderd,Activated,Deactivated,Closing,Closed。
InputEventArgs类只增加了两个属性:TimeStamp,Device(返回一个对象)
PreviewKeyDown,KeyDown,PreviewTextInput,TextInput,PreviewKeyUp,KeyUp。
TextBox
KeyBoardDevice属性提供的方法,包括isKeyDown等等
MouseEnter 和MouseLeave是直接事件。
MouseCapture
通常,单击时我们对UP事件进行响应。
PreviewMouseLeftButtonDown,PreviewMouseLeftButtonUp and etc…
Mouse.Capture()方法并传递适当的元素以捕获鼠标
所有拖放操作都集中在System.Windows.DragDrop中,通过使用该类,任何元素都可以参与拖放操作。
忽略
忽略
内容控件只能包含一个子元素。
Content属性只接受单一对象。
支持的对象分为两大类:
未继承自UIElement类的对象:内容控件调用这些控件的ToString方法。
继承自UIElement类的对象:这些对象使用UIElement.OnRender()方法在内容控件的内部进行显示。
HorizontalContentAlignment和VerticalContentAlignment绝对内容控件中的内容如何对齐,padding内边距。
Target属性,使用指向另一个控件的绑定表达式。
Button,CheckBox,RadioButton。ClickMode属性决定何时引发Click事件以响应鼠标动作。
1. Button控件
IsCancel取消按钮,isDefault默认按钮。一个窗口只能有一个取消按钮和一个默认按钮。
isDefaulted另一个控件具有焦点该控件不接受Enter输入。例如只有当TextBox的AcceptsReturn属性被设置为true的TextBox具有焦点时,默认按钮的isDefaulted属性为false。
2. ToggleButton和RepeatButton
RepeatButton 只要按钮保持按下状态,不断触发Click事件。
ToggleButton 该类具有按下状态和未按下状态两个按钮。
RepeatButton构件高级的ScrollBar控件等,ToggleButton派生出CheckButton和RadioButton两个更有用的类。
3. CheckBox控件
ToggleButton定义了复选框进入特定状态时会触发的三个事件:Checked,UnChecked,Indeterminate。
4. RadioButton控件
Groupname属性,可使用这个属性在同一个容器中创建多个组,或者将包含在多个容器中的单选按钮创建为一组。
ToolTip类或者ToolTip对象设置工具提示,不可用于交互。
1. 设置ToolTip对象的属性。
2. 设置ToolTipService属性
ToolTipService不能继承,设置延迟时间,显示时间等等。
3. PopUp控件
它不会自动显示,StayOpen设置为true,可接受焦点。
可使用和/或内容的布局容器,讲内容封装在HeaderedContentControl中。
封装布局容器,ScrollBarVisibility属性有Visual,auto,Disable,Hidden等值。
水平是HorizontalScrollBarVisibility。
1. 通过代码进行滚动
LineUp, PageUp等方法。
2. 自定义滚动
实现IScrollInfo接口,实现自定义滚动。
有圆角和标题的方框
TabItem是TabControl中的一页
拓展器
minLines, maxLines,AcceptReturn,IsReadOnly。
SpellCheck.IsEnabled,设置自定义的字典等等。
ItemControl类添加了所有基于列表的控件都是用的基本功能。使用数据绑定, 将ItemSource属性设置为希望显示的具有数据项集合的对象。
可以嵌套任意元素
ComboBox一次只能选择一项。
未看
未看