C# WPF MVVM开发框架Caliburn.Micro快速搭建③

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF MVVM开发框架Caliburn.Micro快速搭建③相关的知识,希望对你有一定的参考价值。

01

启动项目

  1.  打开Visual Studio

  2. 创建一个名为“Caliburn.Micro.Hello”的新WPF应用程序

  3. 添加对Caliburn.Micro Nuget包的引用,最新的版本是4.0.173,更新日期2021年5月9日 (2021/5/9)

  4. 删除“MainWindow.xaml”并从“App.xaml”中删除StartupUri,使其如下所示:

<Application x:Class="Caliburn.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:Caliburn.Micro.Hello">
    <Application.Resources>
         
    </Application.Resources>
</Application>

既然Caliburn.Micro更喜欢ViewModel优先的方法,让我们从这里开始。

①创建第一个ViewModel,创建一个新类并将其称为“ShellViewModel”。

②打开ShellViewModel.cs并使用以下代码进行实现:

using System.Windows;


namespace Caliburn.Micro.Hello.ViewModels

    public class ShellViewModel : PropertyChangedBase
    
        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)); //Don't do this in real life :)
        
    

请注意,ShellViewModel继承自PropertyChangedBase。这是一个基类,它实现了属性更改通知的基础结构,并自动执行UI线程封送。它会派上用场:)

现在我们有了ViewModel,让我们创建引导程序。引导程序将配置框架并告诉它该做什么。

创建一个名为“HelloBootstrapper”的新类。您可以使用以下一小段代码:

namespace Caliburn.Micro.Hello 
    public class HelloBootstrapper : BootstrapperBase 
        public HelloBootstrapper() 
            Initialize();
        


        protected override void OnStartup(object sender, StartupEventArgs e) 
            DisplayRootViewFor<ShellViewModel>();
        
    

bootsapper允许您使用DisplayRootViewFor<TViewModel>()指定根视图模型的类型。“根视图模型”是Caliburn.Micro将实例化并用于显示应用程序的视图模型。

接下来,我们需要实现“HelloBootstrapper”,以便它在启动时运行。为此,请更新App.xaml,将引导程序添加到您的资源中,如下所示:

02

WPF

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

我们所要做的就是在应用程序中放置一个Caliburn.Micro引导程序。资源和它将完成其余的工作。现在,运行应用程序。您应该看到如下内容:

Caliburn.Micro创建了ShellViewModel,但不知道如何在没有视图的情况下渲染它。那么,让我们创建一个视图,让它查找。

创建名为“ShellView”的新用户控件(WPF)。使用以下xaml:

<UserControl x:Class="Caliburn.Micro.Hello.ShellView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Height="450" Width="800">
    <StackPanel>
        <Label Content="Hello please write your name" />
        <TextBox x:Name="Name" />
        <Button x:Name="SayHello"
                Content="Click Me" />
    </StackPanel>
</UserControl>

再次运行应用程序。您现在应该可以看到UI:

在文本框中键入内容将启用该按钮,单击该按钮将显示一条消息:

03

工作原理

Caliburn.Micro使用一个简单的命名约定来定位ViewModels的视图。本质上,它接受全名并从中删除“Model”。

因此,给定:MyApp.ViewModels.MyViewModel

它将查找:MyApp.Views.MyView

并排查看视图和ViewModel,可以看到带有x:Name=“Name”的文本框绑定到ViewModel上的“Name”属性。您还可以看到,带有x:Name=“SayHello”的按钮绑定到ViewMModel上具有相同名称的方法。CanSayHello属性通过禁用按钮来保护对SayHello操作的访问。这些是Caliburn.Micro的ActionMessage和Conventions功能的基础。

还有很多东西要展示。接下来,我们可以集成一个IoC容器,比如MEF。

原文标题:Caliburn.Micro Xaml made easy

原文链接:https://caliburnmicro.com/documentation/configuration

翻译:dotnet编程大全

C#技术群 : 添加小编微信,mm1552923备注:进群!

以上是关于C# WPF MVVM开发框架Caliburn.Micro快速搭建③的主要内容,如果未能解决你的问题,请参考以下文章

C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①

C# WPF MVVM开发框架Caliburn.Micro 自定义Conventions⑩

C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

C# WPF MVVM模式[经典]案例

C# WPF MVVM开发框架Caliburn.Micro View / View Model 命名⑨