wpf里搭建基于caliburn.micro的mvvm项目实例

以下是一个基于Caliburn.Micro的WPF MVVM项目实例。在此示例中,我们将使用Caliburn.Micro框架来实现MVVM模式,同时使用简单的UI元素和代码,以便更好地理解和学习。

1. 创建一个新WPF项目

首先,我们需要创建一个新的WPF项目,并使用NuGet引用Caliburn.Micro框架。

2. 创建ViewModel和View

接下来,我们需要在项目中创建ViewModel和View。ViewModel负责处理项目的业务逻辑,而View负责显示用户界面。在这个例子中,我们将创建一个简单的计算器,其中ViewModel仅包含两个整数属性和一个计算方法,View包含两个TextBox和一个Button来启动计算。

2.1. 创建CalculationViewModel

我们首先创建一个名为CalculationViewModel的类,并继承自Caliburn.Micro的PropertyChangedBase类。CalculationViewModel包含两个整数属性和一个计算方法。

```csharp
using Caliburn.Micro;




public class CalculationViewModel : PropertyChangedBase
{
    private int _firstNumber;
    public int FirstNumber
    {
        get { return _firstNumber; }
        set
        {
            if (_firstNumber != value)
            {
                _firstNumber = value;
                NotifyOfPropertyChange(() => FirstNumber);
            }
        }
    }




    private int _secondNumber;
    public int SecondNumber
    {
        get { return _secondNumber; }
        set
        {
            if (_secondNumber != value)
            {
                _secondNumber = value;
                NotifyOfPropertyChange(() => SecondNumber);
            }
        }
    }




    private int _result;
    public int Result
    {
        get { return _result; }
        set
        {
            if (_result != value)
            {
                _result = value;
                NotifyOfPropertyChange(() => Result);
            }
        }
    }




    public void Calculate()
    {
        Result = FirstNumber + SecondNumber;
    }
}
```

在以上代码中,我们使用Caliburn.Micro的PropertyChangedBase类来实现INotifyPropertyChanged接口,以在属性更改时通知UI。这个类包含三个属性:FirstNumber,SecondNumber和Result,以及一个Calculate方法,用于执行计算。

2.2 创建CalculationView

接下来,我们需要创建名为CalculationView的类,并在其中创建UI元素来显示和操作数据。

```xaml
<Window x:Class="WpfCaliburnMicroDemo.CalculationView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:cal="http://www.caliburnproject.org"
        Title="Calculator" Height="200" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBox x:Name="FirstNumber" Width="200" Margin="0,20,0,10" Text="{Binding FirstNumber}" />
            <TextBox x:Name="SecondNumber" Width="200" Margin="0,10,0,20" Text="{Binding SecondNumber}" />
            <Button x:Name="Calculate" Width="100" Content="Calculate" />
        </StackPanel>
        <Label Grid.Row="1" x:Name="Result" Content="{Binding Result}" FontSize="20" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
    </Grid>
</Window>
```

在以上代码中,我们使用Grid和StackPanel布局来放置UI元素。我们使用TextBox输入两个整数,使用Button执行计算,使用Label显示计算结果。每个UI元素都与CalculationViewModel中的相应属性进行绑定。

3. 将ViewModel和View绑定在一起

最后,我们需要将ViewModel和View绑定在一起。可以使用Caliburn.Micro的ViewLocator类来实现自动绑定。在App.xaml.cs中,添加以下代码:

```csharp
using Caliburn.Micro;




public partial class App : Application
{
    private readonly SimpleContainer _container = new SimpleContainer();




    public App()
    {
        InitializeComponent();
    }




    protected override void Configure()
    {
        _container.Singleton<CalculationViewModel>();
        _container.PerRequest<CalculationView>();
    }




    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);
    }
}
```

在以上代码中,我们使用SimpleContainer类来进行依赖注入。我们使用Singleton方法来创建CalculationViewModel实例,使用PerRequest方法来创建CalculationView实例。然后,我们重写了GetInstance,GetAllInstances和BuildUp方法,以确保在需要时正确地获取和创建实例。

4. 运行项目

现在,我们已经完成了创建ViewModel和View,以及将它们绑定在一起的过程。现在,我们可以运行项目,并在运行时使用UI元素来执行计算。

如果喜欢我的文章,那么

“在看”和转发是对我最大的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值