Caliburn.Micro代码示例

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"
              >
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <local:HelloBootstrapper x:Key="bootstrapper" />
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
View Code
using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
   public class HelloBootstrapper:BootstrapperBase
    {
        public HelloBootstrapper()
        {
            Initialize();
        }

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

 

HelloBootstrapper类

using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
   public class HelloBootstrapper:BootstrapperBase
    {
        public HelloBootstrapper()
        {
            Initialize();
        }

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

ShellView.xaml

<UserControl x:Class="WpfApp1.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:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:cal="http://www.caliburnproject.org"
             xmlns:local="clr-namespace:WpfApp1"
             mc:Ignorable="d" 
             d:DesignHeight="800" d:DesignWidth="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50*"/>
            <RowDefinition Height="50*"/>
            <RowDefinition Height="50*"/>
            <RowDefinition Height="50*"/>
           
            <RowDefinition Height="10*"/>
            <RowDefinition Height="10*"/>
        </Grid.RowDefinitions>

        <StackPanel>
            <!--<RepeatButton Name="IncrementCount" Content="Up" Margin="15" VerticalAlignment="Top" />-->
            <!--<RepeatButton Content="Up" Margin="15"  Grid.Row="3" VerticalAlignment="Top">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        --><!--<cal:ActionMessage MethodName="IncrementCount" />--><!--
                        <cal:ActionMessage MethodName="IncrementCount">
                            <cal:Parameter Value="1" />
                        </cal:ActionMessage>
                    </i:EventTrigger>
                    
                </i:Interaction.Triggers>
                
            </RepeatButton>-->
            <RepeatButton Content="Up" Margin="15" Grid.Row="3" VerticalAlignment="Top"
              cal:Message.Attach="[Event Click] = [Action IncrementCount]" Background="Red"/>
            <TextBlock Grid.Row="0" Name="Count" Margin="20" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" />
            <TextBox Grid.Row="1" x:Name="Name"></TextBox>
            <Button Grid.Row="2" Height="40" x:Name="SayHello" Content="Click Me"></Button>
            <UniformGrid Grid.Row="3" VerticalAlignment="Bottom">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="50*"/>
                        <ColumnDefinition Width="50*"/>
                        <ColumnDefinition Width="50*"/>                      
                    </Grid.ColumnDefinitions>
                </Grid>
                <Slider Name="Delta" Minimum="0" Maximum="5" Margin="15" />
                <Button Name="IncrementCount" Content="Increment" Margin="15" />
            </UniformGrid>

        </StackPanel>
    </Grid>
</UserControl>
View Code

ShellView.xaml.cs这个文件是默认的

ShellViewModel

using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
    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));
        }

        private int _count = 50;

        public int Count
        {
            get { return _count; }
            set
            {
                _count = value;
                NotifyOfPropertyChange(() => Count);
                NotifyOfPropertyChange(() => CanIncrementCount);
            }
        }

        public void IncrementCount()
        {
            Count++;
        }

        public void IncrementCount(int delta)
        {
            Count += delta;
        }
        public bool CanIncrementCount
        {
            get { return Count < 100; }
        }
    }
}
View Code

 

转载于:https://www.cnblogs.com/aijiao/p/11104120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值