mvvmlight 完整教程
时间: 2023-06-21 08:17:25 浏览: 168
mvvmlight开辟框架教程
5星 · 资源好评率100%
MVVMLight 是一个轻量级的 MVVM 框架,它的设计目标是简化 WPF、Silverlight 和 Xamarin 应用程序的开发过程。下面是 MVVMLight 的完整教程:
## 1. 安装 MVVMLight
首先需要在 Visual Studio 中安装 MVVMLight。可以在 Visual Studio 的“工具”->“NuGet 包管理器”->“程序包管理器控制台”中执行以下命令来安装 MVVMLight:
```
Install-Package MvvmLight
```
## 2. 创建 ViewModel
ViewModel 是 MVVM 模式中的核心组件,它负责处理业务逻辑。可以通过继承 `ViewModelBase` 类来创建 ViewModel。下面是一个简单的示例:
```csharp
using GalaSoft.MvvmLight;
public class MainViewModel : ViewModelBase
{
private string _message;
public MainViewModel()
{
_message = "Hello, MVVMLight!";
}
public string Message
{
get { return _message; }
set { Set(ref _message, value); }
}
}
```
在这个示例中,`MainViewModel` 继承自 `ViewModelBase` 类,并且包含一个 `Message` 属性,该属性使用 `Set` 方法来触发属性更改事件。
## 3. 创建 View
View 是用户界面的组件,它通常是 XAML 文件。可以使用 MVVMLight 的 `ViewModelLocator` 类来绑定 ViewModel 和 View。下面是一个示例:
```xml
<Window x:Class="MvvmLightDemo.MainWindow"
xmlns:vm="clr-namespace:MvvmLightDemo.ViewModel"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Grid>
<TextBlock Text="{Binding Message}" />
</Grid>
</Window>
```
在这个示例中,`DataContext` 属性绑定到了 ViewModelLocator 中的 `Main` 属性,该属性返回了 `MainViewModel` 的一个实例。
## 4. 注册 ViewModel
ViewModelLocator 是 MVVMLight 中用来管理 ViewModel 实例的类。需要在 App.xaml 中注册 ViewModelLocator。下面是一个示例:
```xml
<Application x:Class="MvvmLightDemo.App"
xmlns:vm="clr-namespace:MvvmLightDemo.ViewModel"
xmlns:loc="clr-namespace:GalaSoft.MvvmLight.Ioc;assembly=GalaSoft.MvvmLight.Extras.WPF4"
StartupUri="MainWindow.xaml">
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True" />
</Application.Resources>
<Application.Startup>
<local:Startup />
</Application.Startup>
</Application>
```
在这个示例中,`ViewModelLocator` 作为资源被注册到了应用程序中,并且在 `DataContext` 属性中被引用。
## 5. 使用命令
MVVMLight 还提供了一个 `RelayCommand` 类来处理命令。可以在 ViewModel 中创建一个 `RelayCommand` 实例,并且在 View 中绑定到该命令。下面是一个示例:
```csharp
using GalaSoft.MvvmLight.Command;
public class MainViewModel : ViewModelBase
{
public RelayCommand SayHelloCommand { get; private set; }
public MainViewModel()
{
SayHelloCommand = new RelayCommand(() => MessageBox.Show("Hello, MVVMLight!"));
}
}
```
```xml
<Window>
<Grid>
<Button Content="Say Hello"
Command="{Binding SayHelloCommand}" />
</Grid>
</Window>
```
在这个示例中,`MainViewModel` 包含一个 `SayHelloCommand` 属性,该属性绑定到了一个按钮的 `Command` 属性。当用户点击按钮时,`SayHelloCommand` 的执行方法会被调用。
## 6. 使用消息
MVVMLight 还提供了一个 `Messenger` 类来处理消息。可以在任何地方发送和接收消息。下面是一个示例:
```csharp
using GalaSoft.MvvmLight.Messaging;
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
Messenger.Default.Register<string>(this, "ShowMessage", message => MessageBox.Show(message));
}
}
public class SubViewModel : ViewModelBase
{
public SubViewModel()
{
Messenger.Default.Send("Hello, MVVMLight!", "ShowMessage");
}
}
```
在这个示例中,`MainViewModel` 注册了一个接收名为 “ShowMessage” 的消息的回调方法。`SubViewModel` 发送了一条消息,该消息会触发 `MainViewModel` 中的回调方法。
以上就是 MVVMLight 的完整教程。当然,MVVMLight 还有更多的功能和用法,可以参考官方文档进行学习。
阅读全文