解聘 人力资源网站上怎么做,做试卷挣钱的网站,美点网络公司网站,龙岩电商公司1、介绍对于Windows桌面端应用开发来讲#xff0c;WPF以其界面渲染的特殊性#xff0c;灵活的界面布局而让人津津乐道#xff0c;因为它能为用户提供更好的交互体验。如何利用WPF开发出让人赏心悦目的界面与功能呢#xff1f;这里不仅仅只是布局的功劳#xff0c;很大一部… 1、介绍对于Windows桌面端应用开发来讲WPF以其界面渲染的特殊性灵活的界面布局而让人津津乐道因为它能为用户提供更好的交互体验。如何利用WPF开发出让人赏心悦目的界面与功能呢这里不仅仅只是布局的功劳很大一部分都在WPF模板的灵活使用那么这里就来聊一聊WPF的三大模板。2、控件模板ControlTemplateWPF所有控件都是基于呈现与行为分离的模式开发人员可以在自己应用场景中根据需要进行不同呈现状态的更改而不会影响到控件的原始功能行为能让我们在任意改变控件外观的同时还能保留控件的操作动作这里其实除了模板的分离还得益于WPF的路由事件后面有机会再聊今天就先说模板。下面以一个控件为例可以进行不同的模板修改。这里我们可以直接使用窗口资源创建一个ControlTemplate对象呈现结果与代码如下 Window x:ClassZhaoxi.ControlTemplate.Demo.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006mc:IgnorabledTitleMainWindow Height450 Width800Window.ResourcesControlTemplate TargetTypeButton x:KeyButtonTemplate1Border BackgroundRed Width80 Height30 CornerRadius5ContentPresenter VerticalAlignment{TemplateBinding VerticalContentAlignment} HorizontalAlignment{TemplateBinding HorizontalContentAlignment}/BorderControlTemplateControlTemplate TargetTypeButton x:KeyButtonTemplate2Border BackgroundOrange Width80 Height80 CornerRadius40ContentPresenter VerticalAlignment{TemplateBinding VerticalContentAlignment} HorizontalAlignment{TemplateBinding HorizontalContentAlignment}/BorderControlTemplateControlTemplate TargetTypeButton x:KeyButtonTemplate3GridPolygon Points40,0 80,80 0,80 FillGreen/ContentPresenter VerticalAlignment{TemplateBinding VerticalContentAlignment} HorizontalAlignment{TemplateBinding HorizontalContentAlignment}/GridControlTemplateWindow.ResourcesUniformGrid Rows1Button ContentButton1 Template{StaticResource ButtonTemplate1}VerticalAlignmentCenter HorizontalAlignmentCenter/Button ContentButton1 Template{StaticResource ButtonTemplate2}VerticalAlignmentCenter HorizontalAlignmentCenter/Button ContentButton1 Template{StaticResource ButtonTemplate3}VerticalAlignmentCenter HorizontalAlignmentCenter/UniformGridWindow三个按钮根据不同的模板进行不了同的呈现但是原始功能依然保留不受任何影响3、数据模板DataTemplate数据模板其实是为了解决数据集绑定中数据呈现的问题它规定了数据集中数据如何布局一般在数据集控件中使用比如ItemsControl、ListView、ListBox、DataGrid等下面还是以一个简单的例子来介绍 Window x:ClassZhaoxi.DataTemplate.Demo.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006mc:Ignorabledxmlns:sysclr-namespace:System;assemblymscorlibTitleMainWindow Height450 Width800Window.Resourcesx:Array Typesys:String x:Keydatassys:StringABCDEFGsys:Stringsys:String1234567sys:Stringx:ArrayDataTemplate x:KeyDataTemplate1Border BorderBrush#DDD BorderThickness0,0,0,1Grid MinHeight30Grid.ColumnDefinitionsColumnDefinition/ColumnDefinition/ColumnDefinition/Grid.ColumnDefinitionsTextBlock Text{Binding [0]} VerticalAlignmentCenter HorizontalAlignmentCenter/StackPanel Grid.Column1TextBlock Text{Binding [1]} Margin0,5/TextBlock Text{Binding [2]} Margin0,5/StackPanelTextBlock Text{Binding [3]} Grid.Column2/GridBorderDataTemplateWindow.ResourcesGridItemsControl ItemsSource{StaticResource datas} ItemTemplate{StaticResource DataTemplate1}ItemsControlGridWindow
这里的DataTemplate就规定了绑定到ItemsControl的数据集中的数据如何显示而且被绑定的值才能显示没有被绑定的值无法显示4、容器模板ItemsPanelTemplate窗口模板也是伴随送数据集合控件一起了它规定了数据呈现的排列方式可以通过指定不同的布局控件进行不同的布局显示比如下面的例子介绍了以UniformGrid方式进行布局的例子 Window x:ClassZhaoxi.VisualState.Demo.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006mc:Ignorabledxmlns:sysclr-namespace:System;assemblymscorlibTitleMainWindow Height100 Width800Window.Resourcesx:Array Typesys:String x:Keydatassys:StringABCDEFGsys:Stringsys:String1234567sys:Stringx:ArrayDataTemplate x:KeyDataTemplate1Border BorderBrush#DDD BorderThickness1Grid MinHeight30Grid.ColumnDefinitionsColumnDefinition/ColumnDefinition/ColumnDefinition/Grid.ColumnDefinitionsTextBlock Text{Binding [0]} VerticalAlignmentCenter HorizontalAlignmentCenter ForegroundRed/StackPanel Grid.Column1 VerticalAlignmentCenter HorizontalAlignmentCenterTextBlock Text{Binding [1]} Margin0,5/TextBlock Text{Binding [2]} Margin0,5/StackPanelTextBlock Text{Binding [3]} Grid.Column2 VerticalAlignmentCenter HorizontalAlignmentCenterForegroundGreen/GridBorderDataTemplateWindow.ResourcesGridItemsControl ItemsSource{StaticResource datas} ItemTemplate{StaticResource DataTemplate1}ItemsControl.ItemsPanelItemsPanelTemplateUniformGrid Rows1/ItemsPanelTemplateItemsControl.ItemsPanelItemsControlGridWindow有时候有人为问我如何让一个布局控件通过绑定的方式进行子项的动态增删那么这个问题的奥秘就在上面这个例子中借助一个数据集合控件将此控件的容器模板改变成所要动态增删子项的容器就可以不仅仅是Grid、StackPanel还包括UniformGrid、WrapPanel、DockPanel、Canvas都可以灵活运用能得到意想不到的效果。最后展示一个利用自定义容器的方式进行了一个瀑布流式布局的动态数据呈现END持续关注后续更新更多干货