開源WPF控件庫-AdonisUI

原文:https://github.com/benruehl/adonis-ui

翻譯:沙漠盡頭的狼(谷歌翻譯加持)

用于 WPF 應用程序的輕量級 UI 工具包,提供經典和增強的 Windows 視覺效果:

89945dcdb96ced5535ee2b2f42431d13.gif

倉庫信息

  • 倉庫地址:https://github.com/benruehl/adonis-ui

  • Demo:https://github.com/benruehl/adonis-ui#demo

048001b503b1708212052bbd1c143fab.png

有哪些內容?

  1. 幾乎所有 WPF 控件的默認樣式和模板

  2. 可根據需要使用的其他樣式以方便使用

  3. 兩種配色方案(淺色和深色)也可用于自定義樣式

  4. 支持在運行時更改配色方案

  5. 支持其他自定義配色方案

  6. 內置控件的擴展,提供水印等功能

  7. 常見用例的自定義控件很少

設計原則

  1. 保持接近 WPF 的原始外觀

  2. 不需要任何配置,但為想要控制全局和個人行為的人提供選項

  3. 支持 WPF 對創建新控件的內置控件的擴展,以便成為現有應用程序的直接替代品

文檔

使用文檔地址:https://benruehl.github.io/adonis-ui/docs/getting-started/introduction/

開始吧

  1. 在您的項目中引用AdonisUIAdonisUI.ClassicTheme。可通過NuGet[1]或手動下載[2]獲得。目前它至少需要 .NET Framework 4.5.NET Core 3.0

Install-Package?AdonisUI.ClassicTheme?-Version?1.17.1
  1. 像這樣將資源添加到您的應用程序App.xaml中:

<Application?xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary?Source="pack://application:,,,/AdonisUI;component/ColorSchemes/Light.xaml"/><ResourceDictionary?Source="pack://application:,,,/AdonisUI.ClassicTheme;component/Resources.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>
  1. 從 Adonis UI 的默認樣式派生窗口樣式,如下所示:

<Window.Style><Style?TargetType="Window"?BasedOn="{StaticResource?{x:Type?Window}}"/>
</Window.Style>

控件特色

在運行時切換配色方案

Adonis UI 帶有淺色和深色配色方案。可以不受限制地添加自定義配色方案。

淺色方案深色方案 Scheme
7bd6bee37413c22341dea36aadb201cc.gif290cbafbb8abe9ee9058c8fde059cc09.gif

要在運行時切換配色方案,ResourceDictionary需要從應用程序資源中刪除包含方案的所有顏色和畫筆,以便可以添加不同的配色方案。這可以使用內置ResourceLocator類來完成,例如在單擊事件處理程序中。

AdonisUI.ResourceLocator.SetColorScheme(Application.Current.Resources,?ResourceLocator.DarkColorScheme);

第一個參數必須是對ResourceDictionary包含配色方案的引用,作為其MergedDictionaries。第二個參數是應添加的配色方案的 Uri。

閱讀有關切換配色方案的更多信息[3]

強調色

在依賴于背景區域和邊框的統一顏色的同時,強調色可用于視覺突出重要點。默認情況下,兩種配色方案都使用藍色作為強調色。這可以通過覆蓋強調色值來改變。一組樣式有助于在強調色上顯示按鈕等控件。

關于顏色和畫筆的信息[4]

自定義窗口標題欄

Adonis UI 帶來了一個自定義窗口標題欄,默認情況下看起來與 Windows 10 標題欄一模一樣,但有幾個優點。首先,它尊重當前的配色方案,因此在切換到深色配色方案時它會變暗。其次,它的顏色也可以獨立于顏色方案設置,例如通過綁定和觸發器。第三,它的內容可以很容易地定制,例如通過隱藏圖標、添加額外的按鈕或在其中放置標簽。派生您的窗口AdonisWindow以接收這些功能。



d24e54caad52f6a97efbb7713a74e569.pngb0aeb2be5fcf93dfe920cfa6c479d78b.png
70980b2d99128f732849e092dc734117.pngc5872c27f3c46205122513847c3b5b78.png

閱讀有關窗體的更多信息[5]

光標聚光燈懸停效果(Cursor Spotlight hover effect)

依賴交互的 UI 控件(如按鈕、文本框、組合框、列表框等)在此處使用稱為 Cursor Spotlight 的懸停效果。當將鼠標懸停在隱藏的控件上時,它會使光標周圍的圖層可見。它適用于兩種配色方案。

淺色方案深色方案 Scheme
0aff5475de62470eca49c254efe9ed45.gif38c1c226ed616b4cbbae95b592055f3a.gif

因為它與OpacityMasks一起作用不僅限于照亮 UI 控件。它可以用來隱藏幾乎所有可以用 WPF 渲染的東西。

閱讀有關光標聚光燈效果的更多信息[6]

連鎖反應(Ripple effect)

默認情況下,按鈕和 ContextMenuItem 在單擊時會顯示漣漪效果。ListBoxItems 也支持它,但默認情況下禁用它。

淺色方案深色方案 Scheme
299399b981a043fbdc852fdb9272feb6.gif6dd6c1817b55b00f0acbe4243844fa47.gif

閱讀有關漣漪效應的更多信息[7]

圖層

在 UI 設計中,容器將屬于一起的項目分組是很常見的。例如,在 WPF 中,這可以使用 GroupBoxes 輕松實現。如果容器分配了不同的背景顏色以更好地區分分組項目及其周圍環境,則顏色對比可能會成為問題。灰色按鈕最初在白色應用程序背景上可能看起來不錯,但是當它們被移動到也具有灰色背景的 GroupBox 中時,它們可能會失去可見性。

這就是為什么 Adonis UI 引入了一個簡單的分層系統,它可以根據 UI 控件所屬的層自動調整 UI 控件的顏色。默認情況下,所有樣式的 Adonis UI 都會自動適應系統,但也可以禁用它。

淺色方案深色方案 Scheme
d3e4e4bd104ecdf5b7078dc3dc77cfab.png00f81260134710205dfdc5de50c75e68.png

這些圖像顯示了一個由 Buttons 和 GroupBoxes 組成的簡單布局。所有控件都使用它們的默認樣式,除了它們的內容之外沒有設置任何屬性。分層系統負責稍微調整每層按鈕的顏色和 GroupBoxes 的背景。它確保容器的背景和容器中控件的背景始終存在差異。如果沒有系統,所有按鈕都將具有完全相同的背景顏色。

該系統是完全可定制的。當然,它適用于所有控件,而不僅僅是按鈕。每個控件都可以配置為為其子級增加層,但默認情況下已經為某些控件(如 GroupBoxes)啟用它。控件也可以強制駐留在特定層上。

閱讀有關分層系統的更多信息[8]

數據驗證支持

WPF 的數據驗證機制提供了驗證屬性值并在它們無效時分配錯誤消息的能力。在 Adonis UI 中,如果控件綁定到無效屬性,則錯誤會在控件模板中由紅色邊框和錯誤圖標指示。當控件獲得鍵盤焦點或用戶將鼠標懸停在圖標上時,錯誤消息將顯示為彈出窗口。要設置驗證錯誤,可以使用接口IDataErrorInfoWPF

淺色方案深色方案 Scheme
9b8b0a41f3fe92bec0b77ab95baa6c05.png8f506138ccb244118fabaed654c31d19.png

默認情況下,錯誤消息彈出窗口顯示在鍵盤焦點和鼠標懸停上。兩者都可以單獨禁用。

閱讀有關數據驗證的更多信息[9]

ComponentResourceKeys

Adonis UI 提供的資源具有分配的 ComponentResourceKey,以便以簡單的方式使用它們。資源存在于顏色、畫筆、尺寸、樣式、模板和圖標等類別中。例如,當前配色方案的前景畫筆可以通過引用其資源鍵來使用,如Foreground="{DynamicResource {x:Static adonisUi:Brushes.ForegroundBrush}}"ComponentResourceKeys 允許使用 IntelliSense 自動完成,這在探索可用資源時會派上用場。

閱讀有關資源的更多信息[10]

Space

控件之間的Space通常由邊距、填充和網格行和列控制。為了確保每個位置的Space一致,可以選擇一個固定的大小,在任何地方都使用(或它的倍數)。Adonis UI 提供了一個支持您這樣做的系統。默認情況下,空間的基值為8,但可以分別針對水平和垂直空間進行調整。

可以像這樣應用空間:

<RowDefinition?Height="{adonisUi:Space?1}"/>?<!--?equals?Height="8"?-->
<RowDefinition?Height="{adonisUi:Space?2.5}"/>?<!--?equals?Height="20"?-->
<RowDefinition?Height="{adonisUi:Space?2.5+1}"/>?<!--?equals?Height="21"?-->
<RowDefinition?Height="{adonisUi:Space?2.5-1}"/>?<!--?equals?Height="19"?-->

同樣適用于邊距和填充等厚度:

<Button?Margin="{adonisUi:Space?1}"/>?<!--?equals?Margin="8,8,8,8"?-->
<Button?Margin="{adonisUi:Space?1,?2}"/>?<!--?equals?Margin="8,16,8,16"?-->
<Button?Margin="{adonisUi:Space?1,?1+2,?2,?3}"/>?<!--?equals?Margin="8,10,16,24"?-->

閱讀有關空間的更多信息[11]

演示

板上有一個 WPF 演示應用程序,它顯示了 Adonis UI 的大部分功能。請不要猶豫,試一試。

在這里下載[12]

License

MIT ? Benjamin Rühl

參考

  • AdonisUI - 用于 WPF 應用程序的輕量級 UI 工具包,提供經典但增強的 Windows 視覺效果[13]

參考資料

[1]

NuGet: https://www.nuget.org/packages/AdonisUI.ClassicTheme/

[2]

手動下載: https://github.com/benruehl/adonis-ui/releases

[3]

閱讀有關切換配色方案的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/colors-and-brushes/#switching-color-schemes-at-runtime

[4]

關于顏色和畫筆的信息: https://benruehl.github.io/adonis-ui/docs/guides/colors-and-brushes/

[5]

閱讀有關窗體的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/window/

[6]

閱讀有關光標聚光燈效果的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/cursor-spotlight/

[7]

閱讀有關漣漪效應的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/ripple/

[8]

閱讀有關分層系統的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/layers/

[9]

閱讀有關數據驗證的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/data-validation/

[10]

閱讀有關資源的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/styles-and-templates/

[11]

閱讀有關空間的更多信息: https://benruehl.github.io/adonis-ui/docs/guides/space/

[12]

在這里下載: https://github.com/benruehl/adonis-ui/releases/download/1.17/AdonisUI.Demo.zip

[13]

AdonisUI - 用于 WPF 應用程序的輕量級 UI 工具包,提供經典但增強的 Windows 視覺效果: https://mp.weixin.qq.com/s/TaX0PqCci4vMlTdmbLAsCw

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

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

相關文章

Unity3D腳本的生命周期(執行順序)

Unity腳本中有許多固定的函數 例如Start();Update(); 而這些函數都有固定的執行順序 搞清楚這些函數的執行順序 對于我們理清代碼的邏輯就顯得尤為重要 舉個簡單的例子 //腳本A public static int a 1; void Start(){a 2; }//腳本B void Start(){Debug.Log(A.a); } 這時&…

【ArcGIS微課1000例】0023:ArcGIS將地理照片(無人機照片)轉為點(航跡)案例教程

本文演示在ArcGIS中,批量將無人機航測獲取的帶有地理坐標的照片轉為點,形成航線軌跡,并計算出三維坐標,為航測數據內業處理提供一定的基礎支持。 1. 效果展示 無人機正射照片: 地理坐標轉點(航跡): 2. 工具介紹 在ArcGIS中提供了批量將無人機多張照片自帶的地理坐標轉…

微信上傳圖文消息素材40007,invalid media_id hint

上傳圖文消息素材40007&#xff0c;invalid media_id hint&#xff0c;微信40007 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年5月16日 08:37:24 星期一 ht…

《A Seat at the Table》作者訪談錄

\本文要點\\CIO&#xff08;首席信息官&#xff09;和IT領導者們必須重新定義他們的IT組織與其他企業之間的關系&#xff0c;只有這樣才能利用DevOps帶來的敏捷和開發周期的縮短。\\t傳統的觀點認為&#xff0c;IT部門是“業務”的一個獨立承包商&#xff0c;這樣的觀點阻礙了公…

WPF效果第一百九十二篇之TreeView支持多選

前面一篇文章中玩耍了框選ListBox的效果;今天要分享基于TreeView實現節點得多選操作,最終實現的效果,如下圖:1、參考項目:https://github.com/cmyksvoll/MultiSelectTreeView2、我在里面增加了一個路由事件public static readonly RoutedEvent SelectedItemsChangedEvent Even…

js實現排序去重計算字符次數

/*去重*/var arr[1,4,4,7,3,9,0,3,2,1,"你好","你","你好","你 "];var arr2[];for(var i0;i<arr.length;i){if(arr2.indexOf(arr[i])-1){arr2.push(arr[i]);}}console.log(arr2);/*排序*/var arr[1,4,2,8,3,0,5];var temp;for(var …

【BIM入門實戰】Win11平臺上Revit 2018_x64簡體中文版圖文安裝與卸載完整教程

Win11平臺上Revit 2018_x64簡體中文版圖文安裝與卸載完整版教程。 【擴展閱讀】:【BIM】Revit2018項目模板、族庫圖文安裝教程 1. Revit 2018安裝 斷開網絡連接,雙擊軟件安裝包中的Revit_2018_G1_Win_64bit_dlm_001_003.sfx.exe進行安裝。 選擇默認的目標文件夾,安裝完成后…

[轉]Xdebug----Failed loading

環境說明&#xff1a; 1、php7.2.1 2、php.ini配置 [Zend] zend_extensionD:\work-Doc\wiki\php-7.2.11-Win32-VC15-x64\ext\php_xdebug-2.6.1-7.2-vc15-x86_64.dll xdebug.remote_port9000 xdebug.remote_enable1 xdebug.remote_host127.0.0.1 xdebug.remote_handlerd…

【BIM入門實戰】Revit 2018模型設計階段重點及注意事項總結

1、最常用的三個快捷指令:對齊AL、尺寸標注DI、可見性設置VV; 2、進行新項目的創建,需要根據不同的項目類型,選擇不同的樣板文件,例如:創建的是建筑模型就需要選擇 “建筑樣板”,而結構模型就需要選擇 “結構樣板”,也可以選擇自己設置的樣板文件; 3、CAD優化處理后每…

用狀態機STATE MACHINE實現有選擇的文件轉換

用書上的例子實現在解析HTML文本時&#xff0c;對"<>"中的符號不進行字符轉換。 import sys import string from optparse import OptionParserCHAR_MAP dict(zip(string.ascii_lowercase,string.ascii_lowercase[13:26] string.ascii_lowercase[0:13]) )cla…

正式發布丨VS Code 1.69

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;4分鐘)歡迎來到 Visual Studio Code 6月更新&#xff01;本次更新主要亮點如下&#xff1a;▌3 way merge editor在這個版本中&#xff0c;我們繼續開發 3 way merge editor。可以通過將 git.mergeEditor 設置為 true…

Codeforces Round #450 (Div. 2)D. Unusual Sequences[數論][組合數學][dp II]

題目&#xff1a;http://codeforces.com/contest/900/problem/D 題意&#xff1a;找到加和為m的且gcd為n的數列種類數 分析&#xff1a;可以轉化為求gcd為1的加和為m/n的種類數&#xff0c;假設有m/n個1&#xff0c;則除了第一個以外的每個1可以選擇和前面一項合并&#xff0c;…

ffmpeg 常用命令

去LOGO水印&#xff1a; ffmpeg -i test.mp4 -filter_complex "delogox850:y500:w160:h70:show0" delogo.mp4加文字&#xff1a; ffmpeg -i test.mp4 -vf "drawtextfontfileMicroYaHei.ttf:text雪人制造:x60:y60:fontsize24:fontcolor#FFFFFF0.8" -y draw…

css_oneday

css css概述&#xff1a; css全稱Cascading Style Sheets &#xff1a;層疊樣式表&#xff0c;用于控制網頁的樣式和布局。 css的四種引入方式 1.行內式 行內式是在標記的style屬性中設定CSS樣式。這種方式沒有體現出CSS的優勢&#xff0c;不推薦使用。 <body><p styl…

【BIM入門實戰】Revit 2018墻體繪制—別墅地下室

別墅地下室繪制效果: 設置墻體顯示模式: 本文需要繪制的墻體包括:200mm外墻、200mm內墻和100mm內墻。 1. 外墻(200mm)繪制 點擊【建筑】選項卡→點擊【墻:結構】。 選擇直線繪制工具,設置參數如下:

動畫-animation

動畫1.keyframes規則2.animation屬性Webkit內核的瀏覽器&#xff08;Safari,chrome&#xff09;需要加-webit-前綴。持續時間&#xff1a;animation-duration-webkit-animation-duration時間函數&#xff1a;animation-timing-function-webkit-animation-timing-function延遲時…

供應鏈攻擊日益嚴重,微軟開源 SBOM 生成工具 Salus

Software Package Data Exchange&#xff08;SPDX&#xff09;規范作為ISO/IEC 5962:2021發布&#xff0c;被認定為安全性、許可合規和其他軟件供應鏈構件領域的國際開放標準。ISO/IEC JTC 1是一個獨立的非政府標準機構。包括英特爾、微軟、西門子、索尼、新思科技、VMware和Wi…

01 冒泡排序

####定義: 冒泡排序(bubble sort):是一種簡單的排序算法.它重復的走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來.走訪數列的工作就是重復的進行直到不需要交換,也就是這個數列已經排序完成.這個算法的由來是因為越小的元素由交換慢慢"浮"到…

python 讀取json為list及向json文件追加數據

""" 讀取json數據到list """ def read_json_list(json_file):if not (os.path.exists(json_file) and os.path.isfile(json_file)):with open(json_file, w) as f:f.write([])with open(json_file, r, encodingutf-8) as f:try:school_list jso…

【BIM入門實戰】建筑墻體知識全攻略

墻體是建筑重要構成部分,墻體的主要作用就是承重、圍護、分割。所以,穩定、保溫、隔熱、隔聲這些是基本要求。 一、墻體分類 1. 墻體依其在房屋所處位置的不同,有內墻、外墻、其他墻之分 (1)外墻:凡位于建筑物外界的墻稱為外墻。外墻是房屋的外圍護結構,起著擋風、阻雨…