WPF笔记

1、权限:





xmlns: sys="clr-namespace:System; assembly=mscorlib"


2、DispatcherUnhandledException:
在主应用程序线程中的任意位置,只要放生未处理的异常,就会发生该事件,通过响应该事件,可记录重要错误
通过将DispatcherUnhandedExceptionEventArgs.Handled设置为true继续运行该应用程序


3、自定义命令:







样式:













动画:













事件触发器:










     


设置元素的默认宽带:Double.NaN(NaN表示not a number)

ActualWidth属性检索按钮的当前值,是按钮当前的渲染 的宽度,该属性是只读的。


















样式触发器:




开始,暂停,继续,停止动画:



626
显示强制转移焦点:
FocusManager.SetFocusedElement()


实现了INotifyCollectionChanged接口的类:
ObservableCollection<>,相当于List<>,不过可以自动更新绑定元素的集合列表
唯一的区别是不能直接绑定到datatable对象上,而是需要dataview对象。每个datatable都包含一个准备好的dataview对象。datatable.defaultView


LINQ(Language Integrated Query)表达式是用于查询各种数据源的通用语法


ListView,ListBox以及DataGrid都自动使用VirtualizingStackPanel面板来布局它们的子元素。Combobox使用时的标准化的StackPanel面板,TreeView默认情况下是关闭UI虚拟化的控件,如果要开启:则<TreeView VirtualizingStackPanel.IsVirtualizing="true">


项容器再循环:如果启用了项容器再循环,listbox控件将只保持少量listboxitem对象存活,当滚动时重复使用它们。<ListBox VirtualizingStackPanel.VirtualizationMode="Recycling">,除datagrid之外的所有控件,该特性默认是禁用的


缓存长度:VirtualizingStackPanel创建了几个超出其显示范围的附加项。<ListBox VirtualizingStackPanel.CacheLength="100,500" VirtualizingStackPanel.CacheLengthUnit="Page"/"Item"(可见项之前和之后的附加项的长度和长度单位)


延迟滚动:只有当用户释放了滚动滑块时才刷新列表,需要明确启用:<ListBox ScrollViewer.IsDeferredScrollingEnabled="true">。VirtualizingStackPanel通常是基于项的(至少滚动一个完整项)。可通过将<ListBox VirtualizingStackPanel.ScrollUnit="Pixel">


INotifyPropertyChanged:属性改变接口,包含一个事件。


INotifyDataErrorInfo:数据错误信息接口,为告知WPF使用INotifyDataErrorInfo接口,并通过该接口在修改属性时检查错误,绑定的ValidatesOnNotifyDataErrors属性必须为true:<TextBox Text="{Binding Path=id,Mode=TwoWay,ValidatesOnNotifyDataErrors=true,NotifyOnValidationError=true}"


自定义验证规则:public class myValidationRule:ValidationRule{public override ValidationResult Validate()}//为执行验证必须重写Validate()方法


为使用未在WPF命名空间中定义的类,需将命名空间映射到xml命名空间,该语法:xmlns:前缀="clr-namespace:命名空间;assembly=程序集",如:xmlns:mylocal="clr-namespace:WpfApplication1"


<Border BorderBrush="Green" BorderThickness="1"> <AdornedElementPlaceHolder></AdornedElementPalceHolder> </Border>//可在当前元素的外边添加边框,因为<AdornedElementPlaceHolder>元素代表控件自身


项级别验证:当用绑定组验证绑定元素时,自定义的验证规则(继承ValidationRule)中的重载Valide()方法接受的是一个BindingGroup对象(通过强制转换(BindingGroup(value)得到))。默认情况下得到的数据对象(bindgingGroup)针对的是原始对象,没有应用任何新的修改,为得到希望验证的新值,需要调用bindingGroup.getValue(数据对象,对象属性):string name=bindingGroup.getValue(myobj,"name");注意:在运行验证逻辑前需要提交编辑,BindingGroupName.CommitEdit()


数据提供者:ObjectDataProvider,XmlDataProvider


XPath(Xml解析器)使用类似路径的表示方式。例如“/”标识XML文档的根


字符串转换器:
stringFormat={}{0:C}//C表示引用希望应用的格式化字符串
stringFormat,itemStringFormat
可以使用MultiBinding对多个绑定属性进行格式化


值转换器:理解:在绑定(数据源)与显示UI(目标)之间加入处理逻辑
IValueConverter:为创建值转换器,需要4步。创建一个实现了IValueConverter接口的类。为该类生命添加ValueConversion特性,并指定源数据类型个目标数据类型。实现Convert()方法。实现ConvertBack()方法。
Converter={StaticResource myValueConverter1}。返回Binding.DoNothing指示通知WPF暂时没有设置数据绑定。
可使用IMultiValueConverter接口对多个绑定属性进行值转换器转换。


ItemContainerStyle:为每个项对应自定义样式
ListBox.ItemContainerStyle属性应用的样式都将用于设置每个ListBoxItem对象的属性


样式选择器:StyleSelector,该类负责检查每个数据项(如listBoxItem)并选择合适的样式
定义自定义类继承StyleSelector,并重写(必须重写)SelectStyle()方法。如果要重新应用此样式选择器,可以先将ItemContainerStyleSelector属性设置为NULL来移除,然后再次指定


数据模板:DataTemplate是一块定义如何显示绑定的数据对象的XAML标记。
通过设置DataTemplate.DataType属性来确定使用模板的绑定数据的类型,如<DataTemplate DataType="{x:Type local:Product}"(这个模板将用于窗口中任何绑定到Product对象的列表控件或内容控件,而不需要指定ItemTemplate设置)
如果希望使用选中的数据项的所有信息,当定义绑定时可通过删除Path属性来获取整个数据对象。如:<Button Tag="{Binding}">button1</Button>


模板选择器:模板选择器检查绑定的数据对象,并在几个不同的模板之间进行选择(为不同的项赋予完全不同的模板,需要继承自DataTemplateSelector。必须实现SelectTemplate()方法)。ItemTemplateSelector属性
<DataTemplate>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=name}" Value="yp">
<Setter>
ListBox.SnapsToDevicePixels:当列表框的边缘落于两个像素之间时,这会确保不会使用反锯齿效果


Combobox控件:
IsTextSearchEnabled属性,自动完成提示功能
IsDropDownOpen属性,通过代码设置Combobox的下拉功能
TextSearch.TextPath属性


获取视图对象:
ListCollectionView _view= CollectionViewSource.GetDefaultView(listbox1.itemsSource//_table);
ItemsControl.IsSynchronizedWithCurrentItem属性
SortDescpription类不是WPF命名空间中德类,所以为了使用它,需要添加下面的命名空间别名:xmlns:myConponent="clr-namespace:System.ConponentModel;assembly=WindowsBase"
使用试图过滤集合:ListCollectionView _view=(ListCollectionView)CollectionViewSource.GetDefaultView(_listBox.ItemsSource);
_view.Filter+=new Predicate(object)(myFilterProc);过滤器检查集合中德每个数据项,
GroupItem:集合中分组的容器,ItemsControl类提供了GroupStyle类改变组的样式


ListView:
ListView中的View是GridView对象,gridView对象由gridViewColumn组成
CellTemplate是ListView单元格的数据模板
CellTemplateSelector属性


TreeView:
WPF数据绑定导航父-子关系的秘密:如Category为一个类,包含CategoryName和具有相同CategoryName的Produces集合(每个Category对象都有嵌套的Products对象集合),可将Category对象集合绑定到一个列表控件,然后将另一个列表控件绑定到当前选中的Category对象的Products属性
使用HierarchicalDataTemplate对象设置TreeView.ItemTemplate属性而不是使用DataTemplate对象,HierarchicalDataTemplate对象具有一个额外的优点,就是能够封装第二个模板,然后HierarchicalDataTemplate对象就可以从第一层数据中提取项的集合,并将之提供给第二个模板


DataRelation表示DataTable与DataTable之间的父子关系




DataGrid:
AutoGenerateColumns属性:自动生成列
CanUserResizeColumns属性设置为false来阻止用户改变DataGrid控件中列的尺寸
同过将列的CanUserResize属性设置为false来组织用户改变指定列的尺寸
MinWidth属性防止用户是列的宽度变得特别窄
CanUserReorderColumns属性
列的CanUserReorder属性
列的ElementStyle属性
列的EditingElementStyle属性,编辑列时的属性
LoadingRow事件:当每一行出现在屏幕上时,就会立即为该行引发LoadingRow事件,缺点:当用户在网格中滚动时,会连续引发LoadingRow事件,
RowDetailsTemplate属性:一块可选的独立显示区域,在行的列值的下面显示
RowDetailsVisibilityMode属性
ScrollToView()方法:当选择的项在可见视图的外部时,可使用此方法滚动直到选择的项可见时。


Window:
可使用SystemParameters类来检索有关屏实际大小的基本信息
应用程序-〉Properties->Setting选项卡中可以添加应用程序关闭时保存的数据,以备再次启动时使用,这些数据应该是存放在注册表中。代码方法这些数据的方式:Properties.Setting.Default.myName。Properties.Setting.Default.Save()。
Owner属性:窗口的拥有者(父窗口)
OwnedWindows:窗口拥有的字窗口
在wpf中可随时通过调用window.DragMove()方法启动窗口拖动模式,在MouseLeftButtonDown事件中处理
Cursor="SizeWE"//显示一个可改变窗口宽高的光标


<JumpList>//跳转列表
<JumpPath>//映射到一个文档
<JumpTask>//映射到一个应用程序


使用代码创建跳转列表项:

                      



任务栏进度:
TaskbarItemInfo:
ProgressValue
ProgressState




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值