mvvm

WPF MVVM

杀马特。学长 韩版系。学妹 提交于 2021-01-13 04:29:55
本篇从两个方面来讨论MVVM模式: MVVM理论知识 MVVM示例讲解 一,MVVM理论知识   从上一篇文章中,我们已经知道,WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI。   我们使用模式,一般是想达到高内聚低耦合。在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过数据绑定来更新UI;在响应用户操作上,WinForm是通过控件的事件来处理,而WPF可以使用命令绑定的方式来处理,耦合度将降低。   我们可以通过下图来直观的理解MVVM模式:     View就是用xaml实现的界面,负责与用户交互,接收用户输入,把数据展现给用户。   ViewModel,一个C#类,负责收集需要绑定的数据和命令,聚合Model对象,通过View类的DataContext属性绑定到View,同时也可以处理一些UI逻辑。   Model,就是系统中的对象,可包含属性和行为。   一般

WPF-MVVM-ICommand接口实现

那年仲夏 提交于 2021-01-13 03:50:25
一 接口分析 MVVM框架的目的就是让视图和业务逻辑分离,各干各的。那么怎样实现分离呢,精髓就是绑定ICommand。先看一下ICommand接口的定义: // // 摘要: // 定义一个命令。 [TypeConverter( " System.Windows.Input.CommandConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null " )] [TypeForwardedFrom( " PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 " )] [ValueSerializer( " System.Windows.Input.CommandValueSerializer, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null " )] public interface ICommand { // // 摘要: //

【MVVM】- AngularJS $scope 用法

拜拜、爱过 提交于 2021-01-12 07:26:17
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间纽带。 AngularJS 应用组成: View(视图), 即 HTML。 Model(模型), 当前视图中可用的数据--->scope对象 Controller(控制器), 即 JavaScript 函数,可以添加或修改属性 外观页面 <body ng-app="myApp"> <p>myCtrl01的工作域</p> <div ng-controller="myCtrl01"> $scope对象carname:<span>{{carname}}</span><br> $rootscope对象:<span>{{global}}</span> </div> <hr> <p>myCtrl02的工作域</p> <div ng-controller="myCtrl02"> $scope对象carname:<span>{{carname}}</span><br> $rootscope对象:<span>{{global}}</span> </div> js操作逻辑 var app = angular.module('myApp', []); /* 在 AngularJS 创建控制器时,可将 $scope 对象当作一个参数传递 * 当在控制器中添加 $scope 对象时,视图 (HTML) 可获取这些属性

【MVVM】- AngularJS 下拉框操作

情到浓时终转凉″ 提交于 2021-01-12 07:03:10
AngularJS 下拉框基础应用 外观界面 <div ng-app="myApp" ng-controller="myCtrl"> <select ng-model="selectedName" ng-options="x for x in names"></select> 等价于: <select> <option ng-repeat="item in names">{{item}}</option> </select> <hr> <!-- ng-repeat绑定的值为一个字符串,ng-options绑定的为一个对象 --> <select ng-model="selectedSIte"> <option ng-repeat="item in sites" value="{{item.url}}">{{item.site}}</option> </select> <span>你选中的选址:{{selectedSIte}}</span> <br><br> <select ng-model="selectedSite" ng-options="x.site for x in sites"></select> <span>你选中的选址:{{selectedSite}}</span> <hr> <!-- 因为对象数组没有key,angular默认使用数组的下标值作为key显示 -->

年底面试不知所措?项目经理:做好这3点,轻松拿offer

烂漫一生 提交于 2021-01-09 05:49:05
后台回复“ 送书 ”,免费参与送书活动 年底了,很多公司都在裁员,许多朋友都在被迫找工作,年底应聘小浪潮来临,老李我最近也在负责我们公司的招聘,但是面试过程大部分前端面试者给我的感觉思维比较窄,以及陈述问题时候比较乱,整体给人感觉不是理想。 下面是我作为一个面试官从三个维度给面试者建议和思考吧。 一.自我介绍 1.自我介绍 ,可以简单介绍你毕业什么学校,什么专业 2.出来负责的项目 ,每个项目自己充当的角色 3.每个项目使用前端技术+后端技术 简单大概的说出来就可以了,不要详细到你哪年进入公司,哪年离开公司,负责项目做什么的,说一大通。这个对我们面试官来说,想让你自我简单介绍,其实考察点有两方面: A.面试者的表达能力和概括能力 B.面试者目前掌握什么技术,做过什么项目,在项目中的角色来初步判定这个人的能力 二.问题回答 在本人问他们做过项目中,自己感觉挑战最大的项目是什么,你在这个项目中做了什么,遇到什么问题,怎么解决这些问题的 1.有些面试者给我的答案直接说没有比较大的挑战;这个让我感觉这个人可能没有听懂我的问题,工作那么多年,难道没有一个项目可以拿来说的,那我拿什么来判定你的能力呢?难道凭你几句话,说我很牛逼的,没有什么困难难得到我?我就信任你了,伯乐寻找千里马都要知道几个千里马的特征吧。所以没有你也要在面试前准备好自己做过的项目和总结,在项目中自己做了什么,充当什么觉得。

做好这3点,面试轻松拿offer

旧城冷巷雨未停 提交于 2021-01-09 05:39:30
后台回复“ 面试题 ”,免费领取前端开发面试题 虽然金三银四已经过去了,但是前端开发工程师的招聘需求热度一直不减,我们前几天还要好几位朋友成功拿到过万的前端开发offer。 下面是我作为一个面试官从三个维度给面试者建议和思考吧。 一.自我介绍 1.自我介绍 ,可以简单介绍你毕业什么学校,什么专业 2.出来负责的项目 ,每个项目自己充当的角色 3.每个项目使用前端技术+后端技术 简单大概的说出来就可以了,不要详细到你哪年进入公司,哪年离开公司,负责项目做什么的,说一大通。这个对我们面试官来说,想让你自我简单介绍,其实考察点有两方面: A.面试者的表达能力和概括能力 B.面试者目前掌握什么技术,做过什么项目,在项目中的角色来初步判定这个人的能力 二.问题回答 在本人问他们做过项目中,自己感觉挑战最大的项目是什么,你在这个项目中做了什么,遇到什么问题,怎么解决这些问题的 1.有些面试者给我的答案直接说没有比较大的挑战;这个让我感觉这个人可能没有听懂我的问题,工作那么多年,难道没有一个项目可以拿来说的,那我拿什么来判定你的能力呢?难道凭你几句话,说我很牛逼的,没有什么困难难得到我?我就信任你了,伯乐寻找千里马都要知道几个千里马的特征吧。所以没有你也要在面试前准备好自己做过的项目和总结,在项目中自己做了什么,充当什么觉得。 2.有些面试者回答这个问题,在介绍项目的时候,很大概的说

Xamarin bug-ish behaviour in CarouselView - CurrentItemChanged event fired unexpectedly?

心不动则不痛 提交于 2021-01-07 00:59:25
问题 While I was trying to implement an infinite scroll page I've encountered a strange behaviour with the CurrentItemChanged event of Xamarin.Forms.CarouselView . While the user scrolls, new items are added to the ItemSource and old items are removed (for low memory consumption). After I encountered the strange behaviour I've debugged and narrowed down the problem. So here are the steps to replicate the situation. Create a CarouselView . Create a ObservableCollection<T> in the code behind and

Vue系列(一)——初识Vue.js

非 Y 不嫁゛ 提交于 2021-01-05 01:52:12
Hello小伙伴们大家好,今天要开始Vue系列咯,那么就让我们一起走进Vue的世界吧~第一天让我们与Vue从相识开始。 01.Vue是什么 要问Vue是什么? 官方的说法就是是一套用于构建用户界面的渐进式框架,只关注视图层, 采用自底向上增量开发的设计,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 感觉不太容易理解,我觉得翻译一下呢就是,用来写页面的一种框架,这种框架有这很简单的API能够帮助用户快速开发,然后使用MVVM的模式,使逻辑、视图分离的这么一个框架。 要说这框架好不好学,兔妞觉得,框架被编出来就是帮助开发者开发的,要是比原生的JavaScript还恶 心,谁还用它了,你说是不是,所以定是较原生简单的。 Vue最主要的几个特点就是: 1)MVVM模式 2)双向绑定 3)虚拟DOM 02.MVVM模式 这个图就是一个MVVM的模型,View指的就是视图层,主要用于表现DOM节点; Model 就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model ; ViewModel 就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象, 它是Vue.js的核心

前端应届生如何做一个职业规划

℡╲_俬逩灬. 提交于 2021-01-04 15:34:58
前端的兴起 前端真正兴起和开始频繁出现在大家的视线里,大概是在十年前。彼时的 Web 开发基本是由后端主导,前端能做的只是校验一下数据、操作一下 DOM。(其中数据检验是 JS 产生的根本原因:当时网络太慢,在服务端检验数据并反馈给用户,让用户知晓输入错误,这个流程太长、反应太慢,因此通过脚本在用户端完成第一步校验,既方便了用户,又减轻了带宽的压力。)即使 06 年 jQuery 发布并风靡全球,以及 XMLHttpRequest 被纳入 W3C 标准,也没有改变这种状况。制约它进度的原因很简单,因为很多事情前端 做不了 或者 做不好。随着时间的推移,近几年,Angular、Backbone、React、Vue 等框架陆续发布,让前端越来越正规化、体系化。此时虽然仍有很多事,前端 做不了 或者 做不好,但前端这个岗位却已变得热辣空前。那么,是什么推动着前端发展到如此大的规模和火热的程度? 也许,你可以列举出很多各种各样的原因,但是综其一点,就是 『用户体验』 ,是由于所有人对用户体验的重视,才让前端发展得这么迅猛,这么快地兴起。这里,可能要感谢 Apple,感谢 iPhone,感谢 Jobs,07 年第一代 iPhone 发布,正式引发了几乎所有人对用户体验的重视,从『只要能用就好』,变成『要好用我才买单』的心理。而,前端的先驱者们、浏览器的开发者们,也顺应了这个潮流

Does CallerMemberNameAttribute use reflection

雨燕双飞 提交于 2021-01-02 05:26:16
问题 You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method when implementing INotifyPropertyChanged interface. The question is does it use reflection behind the scene? Are there any performance hit over hard coding Property name? 回答1: No; the compiler hard-codes the member-name directly during compilation. In terms of the IL, this is ldstr . For example if we compile: static void Implicit() { Log(); } static void Explicit() { Log(