原創|使用教程|編輯:龔雪|2019-03-21 10:12:47.000|閱讀 2034 次
概述:本文主要介紹DevExpress WinForms 中的皮膚顏色和LookAndFeel使用情況,DevExpress WinForms v18.2新版已上傳,歡迎收藏試用!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
v18.2版本中更改了控制背景顏色和皮膚一起處理的方式。在v18.1中引入了頁面,其中包含一個skin selector。這個機制取代了的大多數用例。 對于許多應用來說,在全球范圍內應用皮膚是一種可行的方法 - 它易于操作并且可以實現整體一致性。
但是大多數單獨的DevExpress WinForms控件有屬于自己的LookAndFeel屬性,這個屬性已存在多年,這些屬性啟用外觀和單個樣式的每個控件配置。但這種機制可能會讓新用戶困惑,而且每個控件非常有用的用例很少。
為什么要破壞設計一致性并覆蓋單個控件的全局皮膚設置?據調查表明只有一個重要的場景:使用特殊顏色突出顯示特定的UI元素。如果您出于本用例未涵蓋的原因自定義控件LookAndFeel設置,可隨時通過電子郵件聯系開發團隊:winformsteam@devexpress.com。
在以前的版本中,沒有直接的方法將高亮顏色應用于UI元素。自定義背景顏色僅在為控件關閉皮膚時使用,并且需要大量條件代碼來調顏色和運行時的外觀配置。
v18.2中隨處自定義顏色
這是一個比較重大的更新:從v18.2開始,您現在可以應用自定義前景色和背景色,而無需停用外觀。 為了清楚起見,這意味著即使LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin – 這些設置組合被忽略。
您現在可以為控件前景色和背景色選擇特殊值,每個皮膚對其進行不同的解釋。
有五種特殊顏色值:Primary, Info, Warning, Danger和Success,根據當前皮膚(和矢量皮膚的調色板),這些顏色使用不同的色調以保持與皮膚一致。通過將控件的顏色配置為這些特殊值,您可以輕松實現與當前膚色完美結合的控件突出顯示外觀。
例如,要實現此自定義編輯表單的外觀,您可以選擇Update按鈕背景的皮膚信息和Cancel按鈕的Danger。以下是不同Bezier調色板中這些設置的按鈕外觀圖示。
當然,也可以從代碼中分配皮膚:
colId.AppearanceHeader.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
您當前可以將皮膚特殊值指定為這些UI元素的背景:
將在發布時提供對Pivot Grid列標題的支持。
皮膚特殊值可用于前景色而沒有限制。 但是建議不要同時將背景和前景色設置為膚色特殊值! 將此類值指定給背景顏色屬性時,它們會自動更改相關的前景色調以提高可讀性。
LookAndFeel隨著v18.2中的更改,不再需要單個控件上的LookAndFeel屬性。 它們現在仍然可用,但在編輯對話框中顯示一條警告消息:
對于將來的版本,我們打算從design-time中隱藏屬性。
上面詳述的更改存在一個潛在問題:您可能在過去配置了Appearance.BackColor屬性,而LookAndFeel.Style設置為Skin。 這樣的設置可以是用于look&feel配置的快速“tests”的剩余部分,或者是由于外觀取代的先前UI樣式。在這種情況下,將項目升級到v18.2后,您可能會看到意外的控件背景顏色。
為了幫助您在項目中發現任何此類問題,我們擴展了本頁描述的有關DirectX的診斷API。 對于許多情況,設置PaintApiDiagnosticsLevel.Throw模式會很有幫助,如下所示:
DevExpress.XtraEditors.WindowsFormsSettings.ForcePaintApiDiagnostics( DevExpress.Utils.Diagnostics.PaintApiDiagnosticsLevel.Throw);
因此,當控件呈現的背景顏色不是skinned顏色(即不是DevExpress.LookAndFeel.DXSkinColors.FillColors值)時,您將看到拋出異常。這是推薦的方法,因為它可以快速引導您使用自定義顏色的代碼位置。
或者如果您不喜歡處理許多單獨的異常,您可以利用跟蹤模式生成日志輸出到文件或控制臺:
WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Trace, (apiLevel, api) => { Console.WriteLine(apiLevel.ToString() + ": " + api); });
lambda表達式的api參數將包含一個類似AppearanceHeader.BackColor的字符串。 有了這些,您可以在代碼中搜索每個相關屬性的出現次數并評估其設置方式。
掃描關注DevExpress中文網微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網