国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

這篇具有很好參考價值的文章主要介紹了循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在我們的SqlSugar的開發(fā)框架中,整合了Winform端、Vue3+ElementPlus的前端、以及基于UniApp+Vue+ThorUI的移動前端幾個前端處理,基本上覆蓋了我們?nèi)粘5膽?yīng)用模式了,本篇隨筆進(jìn)一步介紹前端應(yīng)用的領(lǐng)域,研究集成WPF的應(yīng)用端,循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)。

1、基于CommunityToolkit.Mvvm開發(fā)WPF應(yīng)用

MVVM是Model-View-ViewModel的簡寫。類似于目前比較流行的MVC、MVP設(shè)計模式,主要目的是為了分離視圖(View)和模型(Model)的耦合。
它是一種極度優(yōu)秀的設(shè)計模式,但并非框架級別的東西,由MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時發(fā)展演變過來的一種新型架構(gòu)。

?MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優(yōu)點
1. 低耦合:視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的View上,當(dāng)View變化的時候Model可以不變,當(dāng)Model變化的時候View也可以不變。
2. 可重用性:可以把一些視圖邏輯放在一個ViewModel里面,讓很多View重用這段視圖邏輯。
3. 獨立開發(fā):開發(fā)人員可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā)(ViewModel),設(shè)計人員可以專注于頁面設(shè)計,使用Expression Blend可以很容易設(shè)計界面并生成xml代碼。
4. 可測試:界面素來是比較難于測試的,而現(xiàn)在測試可以針對ViewModel來寫。

CommunityToolkit.Mvvm??(又名 MVVM 工具包,以前名為?Microsoft.Toolkit.Mvvm) 是一個現(xiàn)代、快速且模塊化的 MVVM 庫。 它是 .NET 社區(qū)工具包的一部分,圍繞以下原則構(gòu)建:

  • 平臺和運(yùn)行時獨立?-?.NET Standard 2.0、?.NET Standard 2.1?和?.NET 6?? (UI Framework 不可知)
  • 易于選取和使用?- 在“MVVM”) 之外,對應(yīng)用程序結(jié)構(gòu)或編碼范例 (沒有嚴(yán)格的要求,即靈活使用。
  • 點菜?- 自由選擇要使用的組件。
  • 參考實現(xiàn)?- 精益和性能,為基類庫中包含的接口提供實現(xiàn),但缺少直接使用它們的具體類型。

MVVM 工具包由 Microsoft 維護(hù)和發(fā)布,是 .NET Foundation 的一部分。 它還由內(nèi)置于 Windows 中的多個第一方應(yīng)用程序使用。

此包面向?.NET Standard,因此可在任何應(yīng)用平臺上使用:UWP、WinForms、WPF、Xamarin、Uno 等;和在任何運(yùn)行時上:.NET Native、.NET Core、.NET Framework或 Mono。 它在所有它們上運(yùn)行。 API 圖面在所有情況下都是相同的,因此非常適合生成共享庫。

官網(wǎng)介紹地址:https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/mvvm/?

CommunityToolkit.Mvvm?類型包括如下列表,它的便利之處,主要通過標(biāo)記式的特性(Attribute)來實現(xiàn)相關(guān)的代碼的生成,簡化了原來的代碼。

?循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

從版本 8.0 開始,MVVM 工具包包含全新的 Roslyn 源生成器,有助于在使用 MVVM 體系結(jié)構(gòu)編寫代碼時大幅減少樣板。 它們可簡化需要設(shè)置可觀察屬性、命令等的方案。

?例如對于屬性的標(biāo)注聲明

[ObservableProperty]
private string? name;

它編譯后,自動會生成相關(guān)的處理代碼。

private string? name;
public string? Name
{
    get => name;
    set => SetProperty(ref name, value);
}

對于命令的屬性標(biāo)注生成,也是如此。

[RelayCommand]
private void SayHello()
{
    Console.WriteLine("Hello");
}

它后面編譯則會生成下面代碼。

private void SayHello()
{
    Console.WriteLine("Hello");
}
private ICommand? sayHelloCommand;
public ICommand SayHelloCommand => sayHelloCommand ??= new RelayCommand(SayHello);

這些是我們常規(guī)MVVM里面用到的屬性和響應(yīng)函數(shù)Command的處理。

在WPF項目的Nugget引用中添加CommunityToolkit.Mvvm的引用包,如下所示。

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

?例如對于MVVM應(yīng)用中,其中包括Model、View、ViewModel三者內(nèi)容中,視圖ViewModel的類定義如下所示。

namespace WHC.SugarProject.WpfUI.ViewModels;

/// <summary>
/// 簡單的視圖模型定義類
/// </summary>
public partial class DashboardViewModel : ObservableObject
{
    /// <summary>
    /// MVVM模式的可觀測屬性
    /// </summary>
    [ObservableProperty]
    private int _counter = 0;

    /// <summary>
    /// 供視圖界面調(diào)用的Command定義
    /// </summary>
    [RelayCommand]
    private void OnCounterIncrement()
    {
        Counter++;
    }
}

通過這個屬性和命令的聲明處理,我們就可以在View視圖中進(jìn)行調(diào)用處理了,我們可以看到視圖Page頁面的代碼如下所示。

<Page
    x:Class="WHC.SugarProject.WpfUI.Views.Pages.DashboardPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WHC.SugarProject.WpfUI.Views.Pages"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
    Title="DashboardPage"
    d:DataContext="{d:DesignInstance local:DashboardPage,
                                     IsDesignTimeCreatable=False}"
    d:DesignHeight="450"
    d:DesignWidth="800"
    ui:Design.Background="{DynamicResource ApplicationBackgroundBrush}"
    ui:Design.Foreground="{DynamicResource TextFillColorPrimaryBrush}"
    Foreground="{DynamicResource TextFillColorPrimaryBrush}"
    mc:Ignorable="d">
    <Grid VerticalAlignment="Top">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <ui:Button
            Grid.Column="0"
            Command="{Binding ViewModel.CounterIncrementCommand, Mode=OneWay}"
            Content="Click me!"
            Icon="{ui:SymbolIcon Fluent24}" />
        <TextBlock
            Grid.Column="1"
            Margin="12,0,0,0"
            VerticalAlignment="Center"
            Text="{Binding ViewModel.Counter, Mode=OneWay}" />
    </Grid>
</Page>

我們可以看到,按鈕的Button的Command處理,直接就是可以使用MVVM 工具包自動編譯生成的屬性ViewModel.Counter和命令CounterIncrementCommand了。

可以看到屬性名自動變?yōu)榇髮?,Public訪問權(quán)限的,而命令則是我們定義的函數(shù)中后綴增加Command。

?

2、WPF的界面控件包

WPF本身提供了很多原生的控件,也非常強(qiáng)大,可塑性也很好,我們可以通過定義它的樣式繼承,以及一些模板化的處理,可以實現(xiàn)非常豐富、美觀的界面處理效果。另外WPF應(yīng)用本身我們系統(tǒng)基于一個比較好的界面布局來設(shè)置應(yīng)用,因此在綜合了解一些WPF的應(yīng)用開發(fā)包和開源基礎(chǔ)框架后,對界面控件部分,采用了HandyControl的控件,而界面布局則參考lepoco/wpfui 的項目進(jìn)行改進(jìn)。

HandyControl的控件 的

官方地址:https://github.com/HandyOrg/HandyControl??

中文文檔地址:https://handyorg.github.io/handycontrol/

它的界面組件提供很好的樣式定制,而且是基于原生WPF的進(jìn)行擴(kuò)展標(biāo)注即可。

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

?而lepoco/wpfui 的項目

GitHub地址:https://github.com/lepoco/wpfui

文檔地址:https://wpfui.lepo.co/documentation/

它的演示界面效果如下所示。

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

相對而言,lepoco/wpfui 的項目最為突出的是它的框架部分,雖然也提供了一些UI控件的封裝,不過樣式都比較普通,而HandyControl的控件則顯得更加美觀一些,因此我綜合兩個項目的優(yōu)點,把它整合一起,結(jié)合MVVM的開發(fā)模式,實現(xiàn)基于SqlSugar框架的WPF應(yīng)用端的開發(fā)。

SqlSugar的開發(fā)框架中WPF應(yīng)用端的登錄界面效果如下。

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

SqlSugar的開發(fā)框架中WPF應(yīng)用端的字典管理界面效果如下。

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

批量添加字典項目的界面

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

?新建、編輯字典項目的界面

循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

?SqlSugar的開發(fā)框架中WPF應(yīng)用端的系統(tǒng)參數(shù)管理界面效果如下。

?循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)

以上是實現(xiàn)的一些功能模塊的界面,具體的功能開發(fā)介紹,后續(xù)繼續(xù)分享介紹。

SqlSugar開發(fā)框架介紹:https://www.iqidi.com/Framework/sugarIndex.htm?

系列文章:

《基于SqlSugar的開發(fā)框架的循序漸進(jìn)介紹(1)--框架基礎(chǔ)類的設(shè)計和使用》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(2)-- 基于中間表的查詢處理》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(3)-- 實現(xiàn)代碼生成工具Database2Sharp的整合開發(fā)》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(4)-- 在數(shù)據(jù)訪問基類中對GUID主鍵進(jìn)行自動賦值處理?》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(5)-- 在服務(wù)層使用接口注入方式實現(xiàn)IOC控制反轉(zhuǎn)》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(6)-- 在基類接口中注入用戶身份信息接口?》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(7)-- 在文件上傳模塊中采用選項模式【Options】處理常規(guī)上傳和FTP文件上傳》

?《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(8)-- 在基類函數(shù)封裝實現(xiàn)用戶操作日志記錄》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(9)-- 結(jié)合Winform控件實現(xiàn)字段的權(quán)限控制》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(10)-- 利用axios組件的封裝,實現(xiàn)對后端API數(shù)據(jù)的訪問和基類的統(tǒng)一封裝處理》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(11)-- 使用TypeScript和Vue3的Setup語法糖編寫頁面和組件的總結(jié)》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(12)-- 拆分頁面模塊內(nèi)容為組件,實現(xiàn)分而治之的處理》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(13)-- 基于ElementPlus的上傳組件進(jìn)行封裝,便于項目使用》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(14)-- 基于Vue3+TypeScript的全局對象的注入和使用》

?《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(15)-- 整合代碼生成工具進(jìn)行前端界面的生成》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(16)-- 工作流模塊的功能介紹》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(17)-- 基于CSRedis實現(xiàn)緩存的處理》

?《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(18)-- 基于代碼生成工具Database2Sharp,快速生成Vue3+TypeScript的前端界面和Winform端界面》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(19)-- 基于UniApp+Vue的移動前端的功能介紹》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(20)-- 在基于UniApp+Vue的移動端實現(xiàn)多條件查詢的處理》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(21)-- 在工作流列表頁面中增加一些轉(zhuǎn)義信息的輸出,在后端進(jìn)行內(nèi)容轉(zhuǎn)換》

?《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(22)-- Vue3+TypeScript的前端工作流模塊中實現(xiàn)統(tǒng)一的表單編輯和表單詳情查看處理?》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(23)-- Winform端管理系統(tǒng)中平滑增加對Web API對接的需求》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(24)-- 使用Serialize.Linq對Lambda表達(dá)式進(jìn)行序列化和反序列化?》

?《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(25)-- 基于SignalR實現(xiàn)多端的消息通訊》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(26)-- 實現(xiàn)本地上傳、FTP上傳、阿里云OSS上傳三者合一處理》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(27)-- 基于MongoDB的數(shù)據(jù)庫操作整合》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(28)-- 快速構(gòu)建系統(tǒng)參數(shù)管理界面》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(29)-- 快速構(gòu)建系統(tǒng)參數(shù)管理界面-Vue3+ElementPlus》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(30)-- 整合客戶關(guān)系管理系統(tǒng)模塊功能》

《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(31)-- 在查詢接口中實現(xiàn)多表聯(lián)合和單表對象的統(tǒng)一處理?》

《利用代碼生成工具快速生成基于SqlSugar框架的Winform界面項目》

《循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)?》文章來源地址http://www.zghlxwxcb.cn/news/detail-700291.html

到了這里,關(guān)于循序漸進(jìn)介紹基于CommunityToolkit.Mvvm 和HandyControl的WPF應(yīng)用端開發(fā)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包