1.WPF技术栈
解析:
[1]MVVM框架:MvvMLight,MvvmToolKit
[2]UI框架:HandyControl
[3]日志框架:Log4Net
[4]ORM框架:Dapper(MSSQL和MySQL)
[5]PLC通信:HslCommunication
[6]模拟战略:仿真平台
2.HandyControl原生控件
解析:Border边框,Button按钮,Calendar日历,CheckBox复选框,ComboBox组合框,ContentControl内容控件,ContextMenu上下文菜单
,DataGrid数据表格,DatePicker日期选择器,Expander展开框,FlowDocument流文档,Frame导航框架,GroupBox分组框,Image图片,Label标签,ListBox列表框,ListView列表视图,Menu菜单,PasswordBox密码框,ProgressBar进度条,RadioButton单选按钮,RichTextBox富文本框,ScrollViewer滚动视图,Seperator分隔符,Slider滑块,StatusBar状态栏,TabControl选项卡控件,TextBlock文本块,TextBox文本框,ToggleButton切换按钮,ToolBar工具条,ToolTip工具提示,TreeView树视图,Window窗口。
3.HandyControl扩展控件
解析:AnimationPath动画路径,Badge标记,BlurWindow背景模糊窗口,ButtonGroup按钮组,CalendarWithClock带有时钟的日历,Card卡片,Carousel轮播,ChatBubble对话气泡,CheckComboBox复选组合框,CirclePanel圆形布局,CircleProgressBar圆形进度条,Clock时钟,ColorPicker颜色拾取器,ComboBox组合框,CompareSlider对比滑块,ContextMenuButton上下文菜单按钮,CoverFlow封面流,CoverView封面视图,DashedBorder虚线边框,DatePicker日期选择器,DateTimePicker日期时间选择器,Dialog对话框,Divider分割线,Drawer抽屉,FlipClock翻页时钟,FloatingBlock漂浮块,GifImageGif图片,GlowWindow辉光窗口,GotoTop回到顶部,Gravatar头像,Grid栅格,Growl信息通知,HoneycombPanel蜂窝布局,ImageBlock图片块,ImageBrowser图片浏览器,ImageSelector图片选择器,ImageViewer图片视图,Loading加载条,Magnifier放大镜,MessageBox消息对话框,Notification桌面通知,NotifyIcon托盘图标,NumericUpDown数值选择控件,OutlineText轮廓文本,Pagination页码条,PasswordBox密码框,PinBoxPIN码框,PopTip气泡提示,PopupWindow弹出窗口,PreviewSlider预览滑块,ProgressButton进度按钮,PropertyGrid属性编辑器,RangeSlider范围滑块,Rate评分,RelativePanel相对布局,RunningBlock滚动块,Screenshot截图,ScrollViewer滚动视图,SearchBar搜索栏,Shield徽章,SideMenu侧边菜单,SimpleItemsControl简单项目控件,SimplePanel简单面板,SimpleText简单文本,SplitButton分割按钮,Sprite精灵,StepBar步骤条,TabControl选项卡控件,Tag标签,TextBox文本框,TimeBar时间条,TimePicker时间选择器,ToggleBlock切换块,Transfer穿梭框,TransitioningContentControl内容过渡控件,WaterfallPanel瀑布流,Watermark水印,WaveProgressBar波形进度条,Window窗口。
4.UpdateSourceTrigger
解析:当做何种改变的时候通知数据源做了改变,默认值是LostFocus。
[1]Default:默认值[默认LostFocus]
[2]Explicit:当应用程序调用UpdateSource方法时生效
[3]LostFocus:失去焦点的时候触发
[4]PropertyChanged:属性改变时立即触发
Mode属性取值如下所示:
[1]ViewModel=>View更新的时候,一般在属性的set块中加入RaisePropertyChanged,它的作用是当数据源改变的时候,会触发PropertyChanged事件,通知UI属性发生了变更;
[2]View=>ViewModel更新的时候,一般利用Binding的UpdateSourceTrigger和Mode属性。
5.命令绑定
解析:
[1]WPF中命令是通过实现ICommand接口创建的。ICommand公开了两个方法[Execute及CanExecute]和一个事件[CanExecuteChanged]。
[2]在MVVMLight框架中,RelayCommand类实现了ICommand接口,用于完成命令绑定。
[3]通过RelayCommand类的构造函数传入Action类型的Execute委托和Func<bool>类型的CanExecute委托,CanExecute委托用于表示当前命令是否可以执行,Execute委托则表示执行当前命令对应的方法。通过命令绑定,解耦了View和ViewModel的行为交互,将视图的显示和业务逻辑分开。
6.RelayCommand泛型构造函数
解析:
public RelayCommand(Action<T> execute, bool keepTargetAlive = false);
public RelayCommand(Action<T> execute, Func<T, bool> canExecute, bool keepTargetAlive = false);
7.MVVM Light工具包
解析:该工具包的主要目的是在Xamarin.Android,Xamarin.iOS,Xamarin.Forms,Windows 10 UWP,Windows Presentation Foundation(WPF),Silverlight,Windows Phone中加速MVVM应用程序的创建和开发。
8.public object CommandParameter { get; set; }
解析:获取或设置要传递给参数Command属性。
9.public string ElementName { get; set; }
解析:获取或设置要用作绑定源对象的元素的名称。
10.Xamarin和Xamarin.Forms项目区别
解析:
11.Xamarin.Forms应用模板
解析:
[1]浮出控件:侧边菜单可在小屏幕上折叠的应用
[2]选项卡式:使用选型卡在各部分之间导航的应用
[3]空白:只有单个初始屏幕的空应用
12.设置Xamarin的JDK和Android SDK路径
解析:
13.Xamarin应用模板
解析:
[1]单一视图应用:具有当个活动和简单布局文件的Android应用。对于任何Android应用,都可以将此基本模板作为起点。
[2]导航抽屉应用:在左侧使用面板来显示导航选项的Android应用。如果具有许多导航目标并希望最大化利用屏幕时间,可使用这种应用作为选项卡的替代。
[3]选项卡式应用:在屏幕底部使用选项卡图标进行导航的Android应用。如果应用具有很少需要频繁切换的目标,可选择这种应用。
[4]空白应用:具有活动类和空白布局的Android应用。
14.MvvmCross工具包
解析:MvvmCross是一个跨平台的MVVM框架。它使开发人员可以在Xamarin.iOS,Xamarin.Android,Xamarin.Mac,Xamarin.Forms,通用Windows平台[UWP]和Windows Presentation Framework[WPF]上使用MVVM模式创建应用程序。
15.Prism知识点
解析:
[1]Region[区域管理]
[2]Module[模块]
[3]View Injection[视图注入]
[4]ViewModelLocationProvider[视图模型定位]
[5]Command[绑定相关]
[6]Eevent Aggregator [事件聚合器]
[7]Navigation[导航]
[8]Dialog[对话框]
16.Prism介绍
解析:
[1]Prism是一个用于在WPF、Xamarin Forms、Uno平台和WinUI中构建松散耦合、可维护和可测试的XAML应用程序框架。
[2]基于Prism的Visual Studio扩展包模板:Prism Template Pack,下载它后可以快速创建基于Prism的项目。
[3]框架中包括MVVM、依赖注入、Command、Message Event、导航、弹窗等功能。
17.PrismApplictionBase抽象类
解析:
[1]IContainerProvider Container只读属性:Unity容器对象,可以用来创建对象。
[2]RegisterTypes(IContainerRegistry containerRegistry)抽象方法:可以用来给容器中注册对象。
[3]Window CreateShell()抽象方法:用来创建主窗体。
18.Application和PrismApplication关系
解析:
19.Prism工程模板[Uno平台]
解析:
[1]Prism Blank App:这是一个创建了基本空白的Prism Uno应用的模板。
20.Prism工程模板[WPF平台]
解析:
[1]Prism Blank App:这个工程模板创建了一个新的WPF shell应用。主要作用是初始化app和展示shell。在Views文件夹中有MainWindows文件,在ViewModels文件夹中有MainWindowViewModel文件。
[2]Prism Module:这个工程模板的作用是给现有的解决方案添加一个Prism模块。
[3]Prism Full App:这个工程模板创建了一个Prism应用,包括一个Shell工程、一个Module工程、一个Core工程、一个Service工程和一个单元测试工程。
21.Prism工程模板[Xamarin.Forms平台]
解析:
[1]Prism Blank App:这个工程模板创建一个.NET Standard Xamarin.Forms应用,包括4个工程:一个PCL工程来共享代码,一个iOS应用,一个Android应用,一个UWP应用。
[2]Prism Module:这个工程模板的作用是给现有的解决方案添加一个Prism模块。
22.DryIoc依赖注入框架
解析:DryIoc是一个快速、小型、功能齐全的.NET IoC容器。
参考文献:
[1]MVVMLight学习笔记:https://www.cnblogs.com/3xiaolonglong/p/10001787.html
[2]MvvmLight ToolKit教程:https://www.cnblogs.com/HelloMyWorld/p/4750070.html
[3]MVVM应用程序中的多线程与调度:https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2014/april/mvvm-multithreading-and-dispatching-in-mvvm-applications
[4]Data Binding和INotifyPropertyChanged是如何协调工作的:https://www.cnblogs.com/wpcockroach/p/3909081.html
[5]WPF之MVVMLight:https://www.bilibili.com/video/av40886206
[6]HandyOrg:https://handyorg.github.io/
[7]PropertyChanged:https://github.com/Fody/PropertyChanged
[8]MvvmCross:https://www.mvvmcross.com/
[9]MvvmCross:https://github.com/MvvmCross
[10]Caliburn.Micro:https://caliburnmicro.com/
[11]PrismLibrary/Prism:https://github.com/PrismLibrary/Prism
[12]WPF Prism:https://blog.csdn.net/zhudaokuan/category_10841440.html
[13]Prism专栏:https://blog.csdn.net/xieqinghai/category_1064423.html
[14]使用DryIoc替换Abp的DI框架:https://www.cnblogs.com/myzony/p/9986947.html