当前位置: 首页 > news >正文

杭州高端网站制作工控人如何做自己的网站

杭州高端网站制作,工控人如何做自己的网站,私人订制app软件,网络营销是什么课程准备 今天学习的Demo是Data Binding中的Linq#xff1a; 创建一个空白解决方案#xff0c;然后添加现有项目#xff0c;选择Linq#xff0c;解决方案如下所示#xff1a; 查看这个Demo的效果#xff1a; 开始学习这个Demo xaml部分 查看MainWindow.xaml#xff1a; …准备 今天学习的Demo是Data Binding中的Linq 创建一个空白解决方案然后添加现有项目选择Linq解决方案如下所示 查看这个Demo的效果 开始学习这个Demo xaml部分 查看MainWindow.xaml Window x:ClassLinq.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/2006xmlns:localclr-namespace:Linqmc:IgnorabledTitleMainWindow SizeToContentWidthAndHeight Height600Window.Resourceslocal:Tasks x:KeyMyTodoList/DataTemplate x:KeyMyTaskTemplateBorder Nameborder BorderBrushAqua BorderThickness1Padding5 Margin5GridGrid.RowDefinitionsRowDefinition/RowDefinition/RowDefinition//Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition /ColumnDefinition //Grid.ColumnDefinitionsTextBlock Grid.Row0 Grid.Column0 TextTask Name:/TextBlock Grid.Row0 Grid.Column1 Text{Binding PathTaskName} /TextBlock Grid.Row1 Grid.Column0 TextDescription:/TextBlock Grid.Row1 Grid.Column1 Text{Binding PathDescription}/TextBlock Grid.Row2 Grid.Column0 TextPriority:/TextBlock Grid.Row2 Grid.Column1 Text{Binding PathPriority}//Grid/Border/DataTemplate/Window.ResourcesStackPanelTextBlock Margin10,0,0,0Choose a Priority:/TextBlockListBox SelectionChangedListBox_SelectionChangedSelectedIndex0 Margin10,0,10,0 ListBoxItem1/ListBoxItemListBoxItem2/ListBoxItemListBoxItem3/ListBoxItem/ListBoxListBox Width400 Margin10 NamemyListBoxHorizontalContentAlignmentStretchItemsSource{Binding}ItemTemplate{StaticResource MyTaskTemplate}//StackPanel /Window先来看看资源包含什么内容省略子项 Window.Resourceslocal:Tasks x:KeyMyTodoList/DataTemplate x:KeyMyTaskTemplate /DataTemplate /Window.ResourcesWindow.Resources 是 XAML 中的一个元素它定义了一个资源字典你可以在其中声明和存储可在整个窗口中重用的资源。 我们发现包含两个资源一个 Tasks 对象和一个 DataTemplate。 通过上一篇文章的学习我们明白 local:Tasks x:KeyMyTodoList/的意思就是创建了一个 Tasks 对象并给它分配了一个键keyMyTodoList。这样你就可以在其他地方通过这个键引用这个 Tasks 对象了。 DataTemplate又是什么呢 DataTemplate x:KeyMyTaskTemplateBorder Nameborder BorderBrushAqua BorderThickness1Padding5 Margin5GridGrid.RowDefinitionsRowDefinition/RowDefinition/RowDefinition//Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition /ColumnDefinition //Grid.ColumnDefinitionsTextBlock Grid.Row0 Grid.Column0 TextTask Name:/TextBlock Grid.Row0 Grid.Column1 Text{Binding PathTaskName} /TextBlock Grid.Row1 Grid.Column0 TextDescription:/TextBlock Grid.Row1 Grid.Column1 Text{Binding PathDescription}/TextBlock Grid.Row2 Grid.Column0 TextPriority:/TextBlock Grid.Row2 Grid.Column1 Text{Binding PathPriority}//Grid/Border/DataTemplate其中DataTemplate x:KeyMyTaskTemplate 是 XAML 中的一个元素它定义了如何将数据对象呈现为 UI 元素。 在这个例子中DataTemplate 定义了一个模板该模板描述了如何将数据呈现在 UI 中。这个模板被赋予了一个键key即 MyTaskTemplate这样你就可以在其他地方引用这个模板了。 GridGrid.RowDefinitionsRowDefinition/RowDefinition/RowDefinition//Grid.RowDefinitionsGrid.ColumnDefinitionsColumnDefinition /ColumnDefinition //Grid.ColumnDefinitionsGrid 定义了一个3行2列的Grid布局 TextBlock Grid.Row0 Grid.Column1 Text{Binding PathTaskName} /Grid.Row0表示第1行Grid.Column1表示第2列Text{Binding PathTaskName} 表示Text属性的值为绑定源的TaskName属性的值。 TextBlock Margin10,0,0,0Choose a Priority:/TextBlockListBox SelectionChangedListBox_SelectionChangedSelectedIndex0 Margin10,0,10,0 ListBoxItem1/ListBoxItemListBoxItem2/ListBoxItemListBoxItem3/ListBoxItem/ListBox表示以下这部分 ListBox Width400 Margin10 NamemyListBoxHorizontalContentAlignmentStretchItemsSource{Binding}ItemTemplate{StaticResource MyTaskTemplate}/表示以下这部分 我们会发现它没有显式的写 ListBoxItem而且它的ListBoxItem数量不是固定的。 它使用了ItemsSource{Binding}ItemsSource 是 ListBox 的一个属性它决定了 ListBox 中显示的项的数据源。 {Binding} 是一个标记扩展它创建一个数据绑定。在这个例子中由于没有指定路径Path所以它会绑定到当前的数据上下文DataContext。数据上下文通常在父元素中设置并且所有的子元素都可以访问。 ItemTemplate{StaticResource MyTaskTemplate}表示每个ListBoxItem对象将按照这个模板进行显示。 cs部分 首先定义了TaskType枚举类型 namespace Linq {public enum TaskType{Home,Work} }定义了Task类 // // Copyright (c) Microsoft. All rights reserved. // // Licensed under the MIT license. See LICENSE file in the project root for full license information.using System.ComponentModel;namespace Linq {public class Task : INotifyPropertyChanged{private string _description;private string _name;private int _priority;private TaskType _type;public Task(){}public Task(string name, string description, int priority, TaskType type){_name name;_description description;_priority priority;_type type;}public string TaskName{get { return _name; }set{_name value;OnPropertyChanged(TaskName);}}public string Description{get { return _description; }set{_description value;OnPropertyChanged(Description);}}public int Priority{get { return _priority; }set{_priority value;OnPropertyChanged(Priority);}}public TaskType TaskType{get { return _type; }set{_type value;OnPropertyChanged(TaskType);}}public event PropertyChangedEventHandler PropertyChanged;public override string ToString() _name;protected void OnPropertyChanged(string info){var handler PropertyChanged;handler?.Invoke(this, new PropertyChangedEventArgs(info));}} }实现了INotifyPropertyChanged接口。 实现INotifyPropertyChanged接口的主要目的是为了提供一个通知机制当对象的一个属性更改时可以通知到所有绑定到该属性的元素。 INotifyPropertyChanged 接口只有一个事件 PropertyChanged。当你的类实现了这个接口你需要在每个属性的 setter 中触发这个事件。这样当属性的值更改时所有绑定到这个属性的 UI 元素都会收到通知并自动更新其显示的值。 再查看Tasks类 // // Copyright (c) Microsoft. All rights reserved. // // Licensed under the MIT license. See LICENSE file in the project root for full license information.using System.Collections.ObjectModel;namespace Linq {public class Tasks : ObservableCollectionTask{public Tasks(){Add(new Task(Groceries, Pick up Groceries and Detergent, 2, TaskType.Home));Add(new Task(Laundry, Do my Laundry, 2, TaskType.Home));Add(new Task(Email, Email clients, 1, TaskType.Work));Add(new Task(Clean, Clean my office, 3, TaskType.Work));Add(new Task(Dinner, Get ready for family reunion, 1, TaskType.Home));Add(new Task(Proposals, Review new budget proposals, 2, TaskType.Work));}} }继承自ObservableCollectionTask类。 ObservableCollectionT 是 .NET 框架中的一个类它表示一个动态数据集合当添加、删除项或者整个列表刷新时它会提供通知。这对于绑定到 UI 元素例如 WPF 或 UWP 应用程序中的数据绑定非常有用因为当集合更改时UI 元素可以自动更新。 再看下这个Demo中最为重要的部分 // // Copyright (c) Microsoft. All rights reserved. // // Licensed under the MIT license. See LICENSE file in the project root for full license information.using System.Linq; using System.Windows; using System.Windows.Controls;namespace Linq {/// summary/// Interaction logic for MainWindow.xaml/// /summarypublic partial class MainWindow : Window{private readonly Tasks tasks new Tasks();public MainWindow(){InitializeComponent();}private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e){var pri int.Parse(((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString());DataContext from task in taskswhere task.Priority priselect task; }} }private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e){var pri int.Parse(((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString());DataContext from task in taskswhere task.Priority priselect task; }表示ListBox选项改变事件处理函数。 var pri int.Parse(((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString());获取选中项的值。 DataContext from task in taskswhere task.Priority priselect task; 中的DataContext获取或设置元素参与数据绑定时的数据上下文。 from task in tasks where task.Priority pri select task; 使用C#中的Linq获得tasks中Priority属性等于pri的所有task对象也可以这样写 DataContext tasks.Where(x x.Priority pri);效果是一样的。 过程 首先实例化了一个Tasks类如下 包含这些Task类。 以选择“2”为例进行说明 打个断点 DataContext的结果如下 ListBox Width400 Margin10 NamemyListBoxHorizontalContentAlignmentStretchItemsSource{Binding}ItemTemplate{StaticResource MyTaskTemplate}/中的ItemsSource{Binding}表示ListBox的数据源就是DataContext也就是有3个Task对象也就是有3个ListItem每个ListItem都按照{StaticResource MyTaskTemplate}这个模板进行显示。 结果就如上图所示。 测试 最后为了测试自己是否真的理解可以按照自己的意图进行更改比如我想根据工作类型进行数据的显示。 TextBlock Grid.Row2 Grid.Column0 TextTaskType:/ TextBlock Grid.Row2 Grid.Column1 Text{Binding PathTaskType}/修改数据模板。 ListBox SelectionChangedListBox_SelectionChangedSelectedIndex0 Margin10,0,10,0 ListBoxItemHome/ListBoxItemListBoxItemWork/ListBoxItem /ListBox修改第一个ListBox。 private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {var pri ((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString();TaskType type new TaskType();switch (pri){case Home:type TaskType.Home;break;case Work:type TaskType.Work;break;default:break;}DataContext tasks.Where(x x.TaskType type); }修改ListBox选项改变事件处理函数。 效果如下所示 总结 本文主要介绍了数据绑定配合Linq的使用希望对你有所帮助。
http://www.hkea.cn/news/14293858/

相关文章:

  • 济南优化推广网站seo网页制作公司的小客户有哪些
  • 购物网站源代码官网搭建
  • 南昌市会做网站有哪几家phpcms 后台修改修改网站备案号
  • 企业做网站的目的怎么样提高网站排名
  • 做网站用的书免费网站代码大全
  • 做网站后台怎么弄最新网页制作资料
  • 黄山公司做网站搜索关键词的软件
  • 宁夏建设工程招标投标信息网站网上商城电商项目
  • 苏州 网站制作公司做网站优化的弊端
  • 艺客网站首页长沙专业做网站公司有哪些
  • 闲鱼网站做交易是先付款吗班级优化大师app下载学生版
  • 汽车销售网站模板 cms公司网站维护建设费入什么科目
  • 百度描述 网站互联网大厂有哪些
  • 哪些网站可以做外贸网页传奇手游排行榜前十名
  • 手机网站demo网站建设要程序员吗
  • idc销售网站源码建筑论坛
  • 中国网站制作企业排行榜企业门户网站模板
  • 做circrna的网站怎么做网站的rss
  • 不让网站开发公司进入后台seo技术顾问
  • 论坛网站策划福州网站关键词
  • 大学生一个人做网站杭州手机网站制作电脑公司
  • 怎么做qq网站宛城区建网站
  • 重庆搜索引擎优化佛山网站优化效果
  • 网站优化标准wordpress $wp
  • 学习网站开发心得体会电商网站开发目的
  • 如何自建网站?静态网站怎么建设
  • 电商网站开发要求邢台招标网
  • 网站优化注意事项制作企业网站的问题
  • 手机网站的静态页面网站二级域名如何设置
  • 亳州网站网站建设芗城网站建设