首先新建一個項目,名稱叫Caliburn.Micro.ActionConvertions 然後刪掉MainWindow.xaml 然後去app.xaml刪掉StartupUri這行代碼 其次,安裝Caliburn.Micro,Caliburn.Micro.Core,這兩個Nuget包,如下圖 然後新 ...
首先新建一個項目,名稱叫Caliburn.Micro.ActionConvertions
然後刪掉MainWindow.xaml
然後去app.xaml刪掉StartupUri這行代碼
其次,安裝Caliburn.Micro,Caliburn.Micro.Core,這兩個Nuget包,如下圖
然後新建一個類Bootstrapper,這個類是引導作用,比如重寫了首頁的引導,ioc註入等
然後在項目中新建ViewModels,Views,在Views中添加視窗ShellView,在ViewModels中添加類ShellViewModel,如下圖
public class Bootstrapper : BootstrapperBase { private SimpleContainer container; public Bootstrapper() { Initialize(); } protected override void Configure() { container = new SimpleContainer(); container.Singleton<IWindowManager, WindowManager>(); container.PerRequest<ShellViewModel>(); } protected override void OnStartup(object sender, StartupEventArgs e) { DisplayRootViewFor<ShellViewModel>(); } protected override object GetInstance(Type service, string key) { return container.GetInstance(service, key); } protected override IEnumerable<object> GetAllInstances(Type service) { return container.GetAllInstances(service); } protected override void BuildUp(object instance) { container.BuildUp(instance); } }
再繼續新建一個類TaskHelper
TaskHelper類的內容入下
修改ShellViewModel類
public class ShellViewModel : Screen { private string output; public void Clear() => Output = String.Empty; public void SimpleSayHello() => Output = "Hello from Caliburn.Micro"; public void SayHello(string name) => Output = $"Hello {name}"; public bool CanSayHello(string name) => !String.IsNullOrEmpty(name); public Task SayGoodbyeAsync(string name) { Output = $"Goodbye {name}"; return TaskHelper.FromResult(true); } public bool CanSayGoodbye(string name) => !String.IsNullOrEmpty(name); public string Output { get { return output; } set { Set(ref output, value); } } }
然後修改ShellView頁面的佈局
<Window x:Class="Caliburn.Micro.ActionConvertions.Views.ShellView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Caliburn.Micro.ActionConvertions.Views" mc:Ignorable="d" xmlns:cm="http://www.caliburnproject.org" xmlns:i="http://schemas.microsoft.com/xaml/behaviors" Title="ShellView" Height="450" Width="800"> <Window.Resources> <Style x:Key="ActionButtonStyle" TargetType="Button"> <Setter Property="Margin" Value="0,10,0,0" /> <Setter Property="HorizontalAlignment" Value="Stretch" /> </Style> </Window.Resources> <Grid> <ScrollViewer> <StackPanel Margin="24,12"> <TextBlock> <Run Text="Output:" FontWeight="Bold" /> <Run Text="{Binding Output}" /> </TextBlock> <TextBlock Text="Name" /> <TextBox x:Name="Name" Margin="0,10,0,0" HorizontalAlignment="Stretch" /> <Button x:Name="Clear" Content="Clear" Style="{StaticResource ActionButtonStyle}" /> <Button x:Name="SimpleSayHello" Content="Simple Say Hello" Style="{StaticResource ActionButtonStyle}" /> <Button cm:Message.Attach="SimpleSayHello" Content="Simple Say Hello (using Message.Attach)" Style="{StaticResource ActionButtonStyle}" /> <Button cm:Message.Attach="[Event MouseDoubleClick] = [SimpleSayHello]" Content="Simple Say Hello (Custom Event - Double Tapped)" Style="{StaticResource ActionButtonStyle}" /> <Button x:Name="FullSyntax" Content="Simple Say Hello (Full Behaviour Syntax)" Style="{StaticResource ActionButtonStyle}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <cm:ActionMessage MethodName="SimpleSayHello" /> </i:EventTrigger> </i:Interaction.Triggers> </Button> <Button x:Name="SayHello" Content="Say Hello (with parameter)" Style="{StaticResource ActionButtonStyle}" /> <Button cm:Message.Attach="SayHello(Name)" Content="Say Hello (with parameter and Message.Attach)" Style="{StaticResource ActionButtonStyle}" /> <Button x:Name="SayGoodbye" Content="Say Goodbye (async method)" Style="{StaticResource ActionButtonStyle}" /> </StackPanel> </ScrollViewer> </Grid> </Window>
修改App.xaml的引導程式代碼
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary> <local:Bootstrapper x:Key="Bootstrapper" /> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
然後運行如下圖所示
如果轉載請標明博客地址https://www.cnblogs.com/R00R/,謝謝