WPF-遵循MVVM框架創建圖表的顯示【保姆級】

文章速覽

  • 1、技術棧
  • 實現步驟
    • 1、創建WPF工程項目
    • 2、引入框架 Caliburn.Micro、數據可視化庫ScottPlot.WPF
    • 3、創建文件夾,并創建相應的View & ViewModel
    • 4、創建啟動類
    • 5、將啟動類設置為啟動項
    • 6、編寫View
    • 7、編寫VM
    • 8、將VM和View中的圖表進行綁定
    • 9、備注
  • 示例效果

堅持記錄實屬不易,希望友善多金的碼友能夠隨手點一個贊。
共同創建氛圍更加良好的開發者社區!
謝謝~

1、技術棧

WPF、MVVM、WPF開發框架Caliburn.Micro、開源的數據可視化庫ScottPlot.WPF。

ScottPlot.WPF 是一個開源的數據可視化庫,用于在WPF應用程序中創建高品質的繪圖和圖表。它基于ScottPlot庫的WPF版本,提供了簡單易用的API,使開發人員能夠通過簡單的代碼創建各種類型的圖表,如折線圖、散點圖、柱狀圖、餅圖等。

Caliburn.Micro是一個微軟開發的用于構建WPF,Silverlight和Windows Phone應用程序的MVVM(模型-視圖-視圖模型)框架。

實現步驟

1、創建WPF工程項目

2、引入框架 Caliburn.Micro、數據可視化庫ScottPlot.WPF

開發框架Caliburn.Micro
數據可視化庫ScottPlot.WPF

3、創建文件夾,并創建相應的View & ViewModel

注意:開發框架Caliburn.Micro 會根據名稱自動匹配View 和ViewModel,因此命名空間以及創建的xmal名和對應的vm名稱需要符合 【**View、**ViewModel】的規則
文件夾&文件名示例

4、創建啟動類

創建一個Bootstrapper類,繼承開發框架Caliburn.Micro中的BootstrapperBase類,用于配置Caliburn.Micro的基礎設置,并指定應用程序的啟動視圖。

        public Bootstrapper(){Initialize();}protected override void OnStartup(object sender, StartupEventArgs e){DisplayRootViewForAsync<ChartViewModel>();}

示例啟動Bootstrappser類

5、將啟動類設置為啟動項

打開App.xmal文件,刪除其中的StartupUri代碼行,并將我們創建的Bootstrapper設置為程序啟動項

    <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary>                    <local:Bootstrapper x:Key="Bootstrapper" /></ResourceDictionary></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>

示例App.xmal

6、編寫View

引入程序集ScottPlot.WPF,并添加UI元素WpfPlot,用以繪制圖表

        xmlns:ScottPlot="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF"<ScottPlot:WpfPlot x:Name="WpfPlot1"/>

示例Xmal

7、編寫VM

VM需要繼承Caliburn.Micro程序集中的Screen類,才可以使用我們引入的Caliburn.Micro MVVM框架
創建一個公開的WpfPlot類型的屬性,用以綁定View上的UI元素,需要引用ScottPlot.WPF命名空間

using ScottPlot.WPF;
private WpfPlot _PlotControl = new WpfPlot();
//圖表清空
PlotControl.Plot.Clear();
//增加一個點
PlotControl.Plot.Add.Scatter(x,y);
//自動軸距
PlotControl.Plot.Axes.AutoScale();
//圖表刷新
PlotControl.Refresh();

示例Vm

8、將VM和View中的圖表進行綁定

(DataContext as ChartViewModel)!.PlotControl = WpfPlot1;

示例View.cs
其中的Load方法需要在xmal中進行聲明并綁定

9、備注

如果不設置為啟動項,而需要點擊按鈕打開我們的創建的MVVM框架的視圖,可以通過Caliburn.Micro命名空間中的WindowManager…ShowDialogAsync(vm);進行打開
示例

var windowManager = new WindowManager();
windowManager.ShowDialogAsync(vm);

示例效果

示例效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903399.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kafka理論學習匯總

基礎知識 基本簡介 Kafka 是一個分布式流式處理平臺&#xff0c;是一種分布式的&#xff0c;基于發布/訂閱的消息系統。 Kafka特點&#xff1a; 1. 同時為發布和訂閱提供高吞吐量 Kafka 的設計目標是以時間復雜度為 O(1) 的方式提供消息持久化能力&#xff0c;即使對 TB 級以…

【亞馬遜云】AWS Wavelength 從理論講解到實驗演練

&#x1faaa; 本文作者&#xff1a;許業寶 ?? 作者信息&#xff1a; &#x1f31e; VSTECS 云解決方案架構師 &#xff5c; AWS Ambassador &#xff5c; &#x1faaa; AWS Community Builder | 亞馬遜云科技技能云博主 ? 已獲六項 AWS 認證 | CKA、CKS認證 &#xff5c; …

ORACLE DATAGUARD遇到GAP增量恢復方式修復RAC環境備機的實踐

ORACLE DATAGUARD技術是一個常用的數據保護機制&#xff0c;在DATAGUARD運行過程中&#xff0c;遇到異常導致備機不同步&#xff0c;而主庫的歸檔日志也被清理&#xff0c;此時出現GAP&#xff0c;無法同步&#xff1b;就需要人工處理&#xff1b;對于小型數據庫重新全量同步數…

Java24 抗量子加密:后量子時代的安全基石

一、量子計算威脅與 Java 的應對 隨著量子計算機的快速發展&#xff0c;傳統加密算法面臨前所未有的挑戰。Shor 算法可在多項式時間內破解 RSA、ECC 等公鑰加密體系&#xff0c;而 Grover 算法能將對稱加密的暴力破解效率提升至平方根級別。據 NIST 預測&#xff0c;具備實用價…

day005

文章目錄 1. Linux系統核心文件1.1 查看系統版本信息1.1.1 /etc/os-release1.1.2 hostnamectl 1.2 查看主機名并修改1.2.1 hostname1.2.2 cat /etc/hostname1.2.3 hostnamectl 1.3 查看Linux內核版本1.3.1 uname -r1.3.2 hostnamectl 1.4 查看網卡信息并修改1.4.1 nmtui 網絡管…

常用財務分析指標列表

財務分析指標是企業財務管理和決策的重要工具&#xff0c;不同需求人群在各自的場景中運用這些指標來做出決策。企業管理者需要通過財務分析指標來評估企業經營狀況、制定戰略和決策&#xff1b;投資者利用這些指標來評估投資價值和風險&#xff1b;債權人通過財務分析指標來評…

刪除非今天日期文件夾--批處理腳本

echo off setlocal enabledelayedexpansion REM ----- 配置部分 ----- set “target_dirK:\360downloads\Software” set “log_file%temp%\delete_folders.log” REM ----- 管理員權限檢查 ----- NET FILE >NUL 2>&1 || ( echo 需要以管理員權限運行&#xff01; …

QT創建軟件登錄界面(14)

文章目錄 一、本章說明二、登錄界面設計2.1 添加登錄窗口2.2 設置登錄窗口布局2.3 主函數中創建登錄窗口對象2.4 登錄窗口頭文件與c文件2.5 源文件添加三、注意四、源碼項目文件一、本章說明 注:本節為【基于STM的環境監測系統(節點+云服務器存儲+QT界面設計)】項目第14篇文…

小天互連即時通訊音視頻功能

小天互連即時通訊的音視頻功能是核心功能及優勢之一&#xff0c;小天互連即時通訊采用先進的音視頻編解碼技術&#xff0c;即使在網絡環境不好的情況下&#xff0c;也能智能優化保證會議穩定進行。因此可以讓遠程開會也變得和面對面交流一樣的便捷&#xff0c;極大地提升了溝通…

【LInux網絡】數據鏈路層 - 深度理解以太網和APR協議

&#x1f4e2;博客主頁&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客倉庫&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01; &…

【零基礎入門】ASP.NET Core快速搭建第一個Web應用

一、為什么選擇ASP.NET Core&#xff1f; 跨平臺支持&#xff1a;可在Windows/macOS/Linux系統運行 高性能&#xff1a;比傳統ASP.NET框架快10倍以上 開源生態&#xff1a;活躍的開發者社區和豐富的NuGet包 云原生支持&#xff1a;完美適配Docker和Kubernetes部署 二、開發…

AT2401C與RFX2401C問題處理資料

1、AT2401C 可以 PIN 對 PIN 替代 RFX2401C 嗎&#xff1f; 答&#xff1a;AT2401C 可以 PIN 對 PIN 替換 RFX2401C&#xff1b;同時 CB2401 也可以 PIN 對 PIN 替換 RFX2401C&#xff1b;我們主要推 AT2401C 這款芯片&#xff0c;如果客戶產 品需要過認證或者應用于音頻產品建…

Redis-緩存應用 本地緩存與分布式緩存的深度解析

Redis緩存場景與策略&#xff1a;本地緩存與分布式緩存的深度解析 在當今高并發、低延遲的互聯網架構中&#xff0c;緩存技術是優化系統性能的核心手段之一。Redis作為分布式緩存的標桿&#xff0c;與本地緩存共同構成了緩存體系的兩大支柱。然而&#xff0c;兩者的適用場景與…

LinuxAgent開源程序是一款智能運維助手,通過接入 DeepSeek API 實現對 Linux 終端的自然語言控制,幫助用戶更高效地進行系統運維工作

一、軟件介紹 文末提供程序和源碼下載 LinuxAgent 開源程序是基于LLM大模型的Linux智能運維助手。通過接入DeepSeek API實現對Linux終端的自然語言控制&#xff0c;幫助用戶更高效地進行系統運維工作。 二、版本特性對比 特性v1.4.1 1.4.1 版v2.0.3 2.0.3 版v2.0.4 2.0.4…

Shadertoy著色器移植到Three.js經驗總結

Shadertoy是一個流行的在線平臺&#xff0c;用于創建和分享WebGL片段著色器。里面有很多令人驚嘆的畫面&#xff0c;甚至3D場景。本人也移植了幾個ShaderToy上的著色器。本文將詳細介紹移植過程中需要注意的關鍵點。 1. 基本結構差異 想要移植ShaderToy的shader到three.js&am…

StarRocks SRCA 考試心得總結

文章目錄 前言0 什么是StarRcoks&#xff1f;1. 關于 SRCA 考試2. 備考資料與學習方式2.1 官方文檔與教程2.2 在線培訓課程2.3 實戰演練 3. 重點考試內容3.1 StarRocks 架構與原理3.2 數據導入與導出3.3 SQL 查詢優化3.4 性能調優 4. 備考建議4.1 多做實操4.2 注重考試中的細節…

什么是 Spring Profiles 以及如何在 Spring Boot 中使用:配置與實踐指南

在現代應用開發中&#xff0c;應用程序通常需要在不同環境&#xff08;如開發、測試、生產&#xff09;中運行&#xff0c;每個環境可能有不同的配置&#xff08;如數據庫、日志級別、消息隊列&#xff09;。Spring Profiles 是 Spring 框架提供的一項功能&#xff0c;用于根據…

Spring Cloud Gateway限流:基于Redis的請求限流實現

文章目錄 引言一、Spring Cloud Gateway限流基礎1.1 限流機制概述1.2 Redis分布式限流原理 二、實現基于Redis的限流方案2.1 環境準備與依賴配置2.2 配置限流策略2.3 自定義限流響應 三、高級應用與最佳實踐3.1 動態限流規則調整3.2 優先級與降級策略3.3 監控與告警 總結 引言 …

keil修改字體無效,修改字體為“微軟雅黑”方法

在網上下載了微軟雅黑字體&#xff0c;微軟雅黑參考下載鏈接 結果在Edit->Configuration中找不到這個字體 這個時候可以在keil的安裝目錄中找到UV4/global.prop文件 用記事本打開它進行編輯&#xff0c;把字體名字改成微軟雅黑 重新打開keil就發現字體成功修改了。 這個…

CSS文字特效實例:猜猜我是誰

CSS文字特效實例&#xff1a;猜猜我是誰 引言 在之前的文章中&#xff0c;我們分別實現了空心文字、文字填充、文字模糊、文字裂開等效果。本文將使用一個小實例&#xff0c;組合使用相關特效&#xff1a;當鼠標懸停在圖片上時&#xff0c;其余圖片模糊&#xff0c;且文字會上…