C# wpf mvvm使用mvvmlight框架搭建 带自定义控件 工程事例
时间: 2023-08-06 08:07:01 浏览: 143
WPF MvvMLight使用示例
好的,这里提供一个简单的C# WPF MVVM使用MVVMLight框架搭建带自定义控件的工程示例,供您参考。
首先,创建一个WPF应用程序,并添加MVVMLight框架的NuGet包。然后,创建一个自定义控件的类,如下所示:
```csharp
public class CustomControl : Control
{
static CustomControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl), new FrameworkPropertyMetadata(typeof(CustomControl)));
}
// 定义自定义属性
public static readonly DependencyProperty CustomProperty = DependencyProperty.Register(
"Custom", typeof(string), typeof(CustomControl), new PropertyMetadata(default(string)));
public string Custom
{
get => (string)GetValue(CustomProperty);
set => SetValue(CustomProperty, value);
}
}
```
在这个类中,我们继承了WPF的Control类,并重载了static构造函数,以便设置默认样式。我们还定义了一个名为Custom的自定义属性。
接下来,创建一个XAML文件,定义CustomControl的外观。例如:
```xml
<Style TargetType="{x:Type local:CustomControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<TextBlock Text="{TemplateBinding Custom}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
```
在这个XAML文件中,我们定义了CustomControl的样式,使用TemplateBinding将Custom属性绑定到TextBlock上。
然后,在MVVM视图中使用CustomControl,例如:
```xml
<Window x:Class="MvvmLightSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MvvmLightSample"
xmlns:vm="clr-namespace:MvvmLightSample.ViewModel"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MainViewModel}"
Title="MainWindow" Height="450" Width="800">
<Grid>
<local:CustomControl Custom="{Binding CustomText}" />
</Grid>
</Window>
```
在这个XAML文件中,我们使用了xmlns:local命名空间引用了CustomControl所在的命名空间,并且将Custom属性绑定到了MainViewModel中的CustomText属性。
最后,在MainViewModel中定义CustomText属性:
```csharp
public class MainViewModel : ViewModelBase
{
private string _customText;
public string CustomText
{
get => _customText;
set => Set(ref _customText, value);
}
}
```
在这个ViewModel中,我们定义了CustomText属性,并在构造函数中初始化它。
这就是一个简单的C# WPF MVVM使用MVVMLight框架搭建带自定义控件的工程示例。希望对您有所帮助!
阅读全文