使用Caliburn.Micro创建简单的WPF程序

2017-09-29 08:05:41来源:CSDN作者:pluto_cj人点击

分享

1、打开VS,创建一个名为“Calburn.Micro.Hello”的 WPF App(.NET Framework)的工程
这里写图片描述
2、安装Caliburn.Micro package到该项目中
打开NuGet, Tools->NuGet Package Manager->Manager NuGet Package for Solution
这里写图片描述
查找Caliburn.Micro并安装到Solution中
这里写图片描述
3、创建一个引导程序,用来配置框架。
  创建一个名为Bootstrapper的新类,使其继承于BoostrapperBase,代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using Caliburn.Micro;namespace Calburn.Micro.Hello{    public class Bootstrapper:BootstrapperBase    {        public Bootstrapper()        {            Initialize();        }        protected override void OnStartup(object sender, StartupEventArgs e)        {            //todo        }    }}

  接下来,我们需要将Bootstrapper放在启动时的地方运行。打开app.xml删除StartupUri配置(以及MainWindow.xaml),然后将引导程序放在Application.Resources中。

<Application x:Class="Calburn.Micro.Hello.App"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:local="clr-namespace:Calburn.Micro.Hello"             >    <Application.Resources>         <ResourceDictionary>             <ResourceDictionary.MergedDictionaries>                 <ResourceDictionary>                     <local:Bootstrapper x:Key="bootstrapper"/>                 </ResourceDictionary>             </ResourceDictionary.MergedDictionaries>         </ResourceDictionary>    </Application.Resources></Application>

4、创建ViewModel(简称“VM”)
  由于Caliburn.Micro更倾向于View-Model-First方法, 我们创建一个名为“ViewModels”的文件夹,并在文件下面创建一个名为“ShellViewModel”的类,代码如下:

using System.Windows;using Caliburn.Micro;namespace Calburn.Micro.Hello.ViewModels{    public class ShellViewModel:PropertyChangedBase    {        protected string _name;        public string Name        {            get            {                return _name;            }            set            {                _name = value;                NotifyOfPropertyChange(() => Name);                NotifyOfPropertyChange(() => CanSayHello);            }        }        public bool CanSayHello        {            get { return !string.IsNullOrWhiteSpace(Name); }        }        public void SayHello()        {            MessageBox.Show(string.Format("Hello {0}", Name));        }    }}

  注意,ShellViewModel继承自PropertyChangeBase,这是实现属性更改通知的基础框架的基类,并且自动执行UI线程编组。

5、创建一个视图(View)
  我们已经创建了ShellViewModel,但并不知道如何去渲染它,因此我们需要创建一个视图。首先创建一个Views的文件夹,然后在该文件夹下面创建一个名为“ShellView”的UserControl的视图。

<UserControl x:Class="Calburn.Micro.Hello.Views.ShellView"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"              xmlns:local="clr-namespace:Calburn.Micro.Hello.Views"             Width="150" Height="80">    <StackPanel>        <TextBox x:Name="Name"/>        <Button x:Name="SayHello" Content="Click me"/>    </StackPanel></UserControl>

6、运行程序
  Bootstrapper允许通过通用方法制定“RootViewModel”的类型,应用程序将“RootViemModel”的类进行实例化,并显示。需要修改Bootstrapper.cs中的代码如下:

using System.Windows;using Calburn.Micro.Hello.ViewModels;using Caliburn.Micro;namespace Calburn.Micro.Hello{    public class Bootstrapper:BootstrapperBase    {        public Bootstrapper()        {            Initialize();        }        protected override void OnStartup(object sender, StartupEventArgs e)        {            //指定RootViewModel            DisplayRootViewFor<ShellViewModel>();        }    }}

  Caliburn.Micro使用简单的命名约定来定位ViewModels的视图。本质上,ViewModel对应的View就是讲其FullName中删除“Model”就是其所对应的View的位置。比如名为“Calburn.Micro.Hello.ViewModels.ShellViewModel”的ViewModel对应的View为“Calburn.Micro.Hello.Views.ShellView”。
  运行程序,你可以看到UI如下:
这里写图片描述

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台