从PRISM开始学WPF(四)Prism-Module?
从PRISM开始学WPF(五)MVVM(一)ViewModel?
从PRISM开始学WPF(六)MVVM(二)Command?
从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?
0x1 PRISM?
PRISM项目地址:
https://github.com/PrismLibrary/Prism
先看下简介:
Prism is a framework for building
loosely coupled
,
maintainable
, and
testable
XAML applications in
WPF
,
Windows 10 UWP
, and
Xamarin Forms
.
谷歌翻译:
Prism是一个框架,用于在WPF,Windows 10 UWP和Xamarin Forms中构建松散耦合,可维护和可测试的XAML应用程序。
可以看出PRISM并不仅仅是一个MVVM框架,他提供了一系列设计模式的实现。这听上去就很Dior了。
0x2 Run
PRISM 不再使用
App.xaml
来为程序设置入口,而是使用 Bootstrapper来初始化程序和启动窗口。在 PRISM的项目中,需要删除
App.xaml
中的
StartupUri
,因为你不再需要使用他了。
通常情况下,你的
App.xaml
是这样的:
<Application x:Class="WpfApp1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp1"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
而PRISM项目中的
App.xaml
是这样的:
<Application x:Class="BootstrapperShell.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BootstrapperShell">
<Application.Resources>
</Application.Resources>
</Application>
PRISM项目中,在
App.xaml.cs
中重写了
OnStartup
方法,让app从Bootstrapper启动:
protected override void OnStartup(StartupEventArgs e)
base.OnStartup(e);
var bootstrapper = new Bootstrapper();
bootstrapper.Run();
Bootstrapper.cs
,中的CreateShell
方法来创建shell,InitializeShell
初始化shell。这里的shell是宿主应用程序,就相当于是我们的主窗体程序,其他的view和module都将会被加载到shell中显示。下面是Bootstrapper.cs
类内容:
using Microsoft.Practices.Unity;
using Prism.Unity;
using BootstrapperShell.Views;
using System.Windows;
namespace BootstrapperShell
class Bootstrapper : UnityBootstrapper
protected override DependencyObject CreateShell()
return Container.Resolve<MainWindow>();
protected override void InitializeShell()
Application.Current.MainWindow.Show();
当然你也可以不用使用MainWindow
,作为shell的窗口,可以改成任何你想要的名字,但他一定是Window类型,你还可以将他放在任何一个位置,为了将来适配MVVM思想,我们将他放在Views目录下面,以后我们所有的View都将放到这个目录下面。
那么,我们在初识WPF的时候,认识的App.g.cs
呢?他里面不是有Main方法吗?我们在同样的位置找到他:
using BootstrapperShell;
using System.Windows.Shell;
namespace BootstrapperShell {
/// <summary>
/// App
/// </summary>
public partial class App : System.Windows.Application {
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main() {
BootstrapperShell.App app = new BootstrapperShell.App();
app.Run();
蛤蛤,他叛变了,App.g.cs
看上去更像是一个在编译的时候才会生成的中间文件,根据App.xaml.cs
中的OnStartup
方法来重新生成了Main方法。
【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
随着工业化的进一步发展,制造业、工业自动化等多领域,都可能用到上位监控系统。而WPF在上位监控系统方面,应该算是当下最流行的前端框架之一了。而随着监控体系的不断完善与更新迭代,监控画面会变得越来越复杂、多样化和全面化。
WPF自定义控件02:字体图标支持
最近几年,多数应用都在采用一种矢量图图标,且它作为一种字体,可以非常方便进行整合,当使用某个图标时,只需要通过文本进行制定具体的图标编码即可使用,这里比较熟知的有Font Awesome。它给我们提供了一套可缩放的矢量图标字体,它可以被指定大小、颜色、阴影以及任何可以用CSS进行定义的样式。
原文:WPF PRISM开发入门一( 初始化PRISM WPF程序)
这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识。目前最新的PRISM的版本是Prism 6.1.0,可以在Github上获取PRISM的源码。
一、什么是字体图标
我们在进行GDI(图形界面)编程的过程中图标是不可少的。近些年随着网络的繁荣和移动应用的繁荣,矢量图的应用越来越火。
矢量图是一种用数学方法描述的、由一系列点和线组成的图,因此相比位图文件比较小,并且还和分辨率无关。
首先我们添加一个带滚动条的textbox控件:
这里 VerticalScrollBarVisibility="Auto"表示是超出垂直距离自动显示滚动条,当然这个滚动条是win系统自带的效果,我们要修改的就是这部分,需要对滚动区域的模板进行自定义修改。
原文:在WPF中使用字体图标
一、源码描述 这是一款基于WPF窗体应用程序的字体图标示例源码, 该源码简单易懂使用于初学者和实战项目应用, 感兴趣的朋友们可以下载看看哦。二、功能介绍 1、用ICO字体代替纯文字 三、实现步骤 1、在网上下载Font ICO 字体字...
原文:从PRISM开始学WPF(一)WPF?
我最近打算学习WPF ,在寻找MVVM框架的时候发现了PRISM,在此之前还从一些博客上了解了其他的MVVM框架,比如浅谈WPF中的MVVM框架--MVVMFoundation 中提到的MVVMFoundation,再比如 ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet 中的Stylet。