Adorner指南
指南是裝飾元素,旨在突出和強(qiáng)調(diào)父表單中的特定點(diǎn)或區(qū)域,并為這些區(qū)域提供可選描述。 在下面的動(dòng)畫中,五種不同的指南將自動(dòng)一一顯示, 這次交互式導(dǎo)覽突出顯示了主要的應(yīng)用程序區(qū)域,并指定了它們所基于的DevExpress控件。
指南是Guide類的對(duì)象,與其他Adorner UI Manager子項(xiàng)相同,每個(gè)指南都有一個(gè)目標(biāo)——分配給該指南的AdornerElement.TargetElement屬性的UI元素。 要?jiǎng)?chuàng)建和修改指南,請(qǐng)單擊組件的智能標(biāo)記上的Choose Elements鏈接,然后使用調(diào)用的Collection Editor對(duì)話框。
Demo: Guides(需要安裝16.2版或更高版本的DevExpress Demo Center)
共同概念
最初,所有adorner指南都在運(yùn)行時(shí)隱藏,要打開這些指南,請(qǐng)將AdornerUIManager.ShowGuides屬性設(shè)置為true,完成此操作后,半透明的灰色層將使您的整個(gè)表單變暗(用戶控件)。 選定的引導(dǎo)線通過用透明顏色繪制其目標(biāo)元素的區(qū)域在此基礎(chǔ)層中切出一個(gè)“hole”,這將為目標(biāo)區(qū)域創(chuàng)建突出顯示效果,當(dāng)前未選擇的參考線僅顯示其邊框。下圖說明了一個(gè)示例。
最終用戶可以單擊指南來選擇它們,要隱藏所有參考線及其下方的灰色層,最終用戶必須按Escape鍵。 請(qǐng)注意顯示指南時(shí),最終用戶不能使用表單的任何UI元素,因?yàn)樗?span style="color:#2B2B2B;font-family:" font-size:16px;background-color:#ffffff;"="">mouse事件都被 adorner layer攔截。
要循環(huán)瀏覽現(xiàn)有指南,請(qǐng)使用管理器的AdornerUIManager.SelectNext和AdornerUIManager.SelectPrev 方法,這些方法根據(jù)其TabIndex屬性值顯示指南。AdornerUIManager.SelectElement 方法可讓您更加具體,并直接導(dǎo)航到所需的指南。
彈出式窗口
如果指南的GuideDefaultProperties.AllowFlyoutPanel 屬性不等于DefaultBoolean.False,則每個(gè)指南在激活時(shí)都會(huì)顯示彈出面板, 最初此面板為空,如下所示。
要為任何現(xiàn)有指南填充彈出面板,請(qǐng)?zhí)幚砉芾砥鞯腁dornerUIManager.QueryGuideFlyoutControl 事件, 此事件提供e.SelectedElement屬性并標(biāo)識(shí)為其彈出指南的面板。 e.Control屬性接受任何控件,這些控件將顯示在所需指南的彈出面板中。 下面的代碼示例說明了如何使用HTML格式的文本字符串填充指南彈出窗口。
C#:
void adornerUIManager1_QueryGuideFlyoutControl(object sender, QueryGuideFlyoutControlEventArgs e) { if(e.SelectedElement.TargetElement == navBarControl) e.Control = new LabelControl() { AllowHtmlString = true, Width = 350, AutoSizeMode = LabelAutoSizeMode.Vertical, Padding = new Padding(20), Text = "<b>Navigation Bar</b><br>" + "A side navigation control that supports integration with Office Navigation Bar<br><br>" + "Shows navigation options for your currently selected module" }; }
VB.NET:
Private Sub adornerUIManager1_QueryGuideFlyoutControl(ByVal sender As Object, ByVal e As QueryGuideFlyoutControlEventArgs) If e.SelectedElement.TargetElement = navBarControl Then e.Control = New LabelControl() With { .AllowHtmlString = True, .Width = 350, .AutoSizeMode = LabelAutoSizeMode.Vertical, .Padding = New Padding(20), .Text = "<b>Navigation Bar</b><br>" & "A side navigation control that supports integration with Office Navigation Bar<br><br>" & "Shows navigation options for your currently selected module"} End If End Sub
彈出面板可以承載更復(fù)雜的內(nèi)容,而不是簡單的標(biāo)簽。 在下圖上,彈出按鈕顯示三個(gè)按鈕和一個(gè)WindowsUI Button Panel。
彈出面板的大小會(huì)自動(dòng)調(diào)整來適合其內(nèi)容,要設(shè)置彈出顯示位置,請(qǐng)使用GuideDefaultProperties.FlyoutLocation屬性。
外觀設(shè)置
您可以自定義任何引導(dǎo)元素的外觀以及外部圖層的外觀。 要重新繪制參考線(其邊界和內(nèi)部區(qū)域),請(qǐng)?jiān)L問Guide.Appearances(對(duì)于單個(gè)參考線)和AdornerUIManager.GuideAppearances(對(duì)于所有參考線)組中的屬性,個(gè)別指南外觀設(shè)置會(huì)覆蓋相對(duì)的全局設(shè)置。下圖顯示了自定義指南。
重要提示:
在為參考線設(shè)置自定義背景色時(shí),請(qǐng)使用四位數(shù)的ARGB值分配半透明色。
C#:
guide1.Appearances.Selected.BackColor = Color.FromArgb(100, 150, 0, 0);
VB.NET:
guide1.Appearances.Selected.BackColor = Color.FromArgb(100, 150, 0, 0)
可以使用分配給GuideAppearances.Layer屬性的AppearanceObject繪制外部層。 與自定義參考色相同,在設(shè)置自定義圖層背景時(shí),請(qǐng)使用ARGB值代替純色。
最后,要自定義指南彈出面板,請(qǐng)使用AdornerUIManager.GuideProperties組。 在這里,可以利用GuideDefaultProperties.FlyoutBackColor和GuideDefaultProperties.FlyoutBorderColor 屬性來應(yīng)用自定義外觀設(shè)置, GuideDefaultProperties.FlyoutOpacity屬性使您可以創(chuàng)建半透明的彈出面板,下圖說明了具有海軍藍(lán)邊界和天藍(lán)色背景的非透明引導(dǎo)彈出。