C# WPF Prism框架初識Binding和DelegateCommand

2024年2月6日 21点热度 0人点赞

Visual Studio Prism Template Pack Install

Visual Studio 2022 -> 擴展 -> 管理擴展 -> 聯機 -> Visual Studio Marketplace -> 搜索 -> Prism Template Pack -> 安裝

Prism Nuget Install

Visual Studio 2022 -> 工具 -> Nuget包管理 -> 管理解決方案的Nuget程序包 -> Prism Core / Prism Wpf / Prism Unity

Add Prism Project For Visual Studio 2022

Visual Studio 2022 -> Prism Full App (WPF)

Prism VVM

Xaml

<Window x:Class="PICTPPrism.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        Title="{Binding Title}" Height="350" Width="525" >
    <Grid>
        <ContentControl prism:RegionManager.RegionName="ContentRegion"/>
        <Button Content="{Binding HelloWorld}" Width="110" Height="40" Command="{Binding WelcomeCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}"/>
    </Grid>
</Window>

VM

public class MainWindowViewModel : BindableBase
{
    private string _title = "Prism Application";
    private string _welcome = "Hello World";
    public DelegateCommand<string> WelcomeCommand { get; private set; }
    public string Title
    {
        get { return _title; }
        set { SetProperty(ref _title, value); }
    }
    public string HelloWorld
    {
        get { return _welcome; }
        set { SetProperty(ref _welcome, value); }
    }
    public MainWindowViewModel()
    {
        WelcomeCommand = new DelegateCommand<string>(WelcomeAction, CanWelcomeAction);
    }
    void WelcomeAction(string parameter)
    {
        MessageBox.Show(parameter);
    }
    bool CanWelcomeAction(string parameter)
    {
        return true;
    }
}

靜態效果