原創(chuàng)|其它|編輯:郝浩|2012-09-26 11:21:16.000|閱讀 810 次
概述:在許多應(yīng)用程序中,GridControl都包含被綁定到特定類(lèi)型(例如Boolean或Image)字段的列。為了顯示和編輯這些列,需要進(jìn)行一些特殊的編輯設(shè)置(以便提供最好的數(shù)據(jù)維護(hù)方法),本文將介紹如何通過(guò)PrintCellStyle更改DXGrid數(shù)據(jù)單元格的外觀。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
在許多應(yīng)用程序中,GridControl都包含被綁定到特定類(lèi)型(例如Boolean或Image)字段的列。為了顯示和編輯這些列,需要進(jìn)行一些特殊的編輯設(shè)置(以便提供最好的數(shù)據(jù)維護(hù)方法):對(duì) Boolean 列設(shè)置復(fù)選框(CheckBox)和對(duì)Image 列設(shè)置PopupImageEdit。此外,就GridControl導(dǎo)出和打印而言,通常會(huì)提出以下問(wèn)題:
所有這些問(wèn)題都可以通過(guò)一個(gè)共同的解決方案得以解決,本文將對(duì)這一解決方案進(jìn)行說(shuō)明。
在打印某個(gè)單元格時(shí),其外觀由單元格打印樣式中定義的DisplayTemplate進(jìn)行定義。因此,如果有必要更改單元格的打印外觀,您需要為該單元格創(chuàng)建一個(gè)新的控件模板,并在自定義打印單元格樣式中將其設(shè)置為DisplayTemplate。不過(guò),如果您想得到完全自定義的數(shù)據(jù)打印表示,那么歡迎您使用我們的XtraReports產(chǎn)品,可以為您提供強(qiáng)大而靈活的方法創(chuàng)建自定義報(bào)表。
例如,如果將PopupImageEdit用作某個(gè)列的編輯器,在打印時(shí)您可能想要將圖像顯示在該列的單元格中。我們的想法就是將ImageEdit控件放入單元格顯示模板中,并將其源屬性綁定到單元格值上。
該擴(kuò)展應(yīng)用標(biāo)記語(yǔ)言(xaml)包含了一些重要的細(xì)節(jié)。首先,這種樣式聲明具有TargetType 和BasedOn 屬性說(shuō)明語(yǔ)言。新的單元格打印樣式必須建立在預(yù)定義的DefaultPrintCellStyle 上。TargetType屬性必須設(shè)置為列(這種樣式將應(yīng)用到該列中)中所用編輯器的屬性類(lèi)型。
第二,該模板中使用的所有控件必須接受打印調(diào)整。因此,繼承BaseEdit的任何控件必須將IsPrintingMode屬性設(shè)置為真。
其他控件必須接受通過(guò)ExportSettings附加屬性執(zhí)行的打印調(diào)整。因此,必須為這些控件提供ExportSettings.TargetType屬性值。xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"命名空間中對(duì)該屬性進(jìn)行了定義,該屬性指定了打印子系統(tǒng)該如何對(duì)待這些控件。
例如,如果您想打印TextBlock,有必要將ExportSettings.TargetType指定為T(mén)ext(文本),然后TextBlock就會(huì)被打印出來(lái)。如果您想設(shè)置某個(gè)控件的背景和前景,則需要分別設(shè)置ExportSettings.Background和ExportSettings.Foreground。
形狀和復(fù)雜控件可導(dǎo)出為圖像:
如果打印模板中存在面板,則需將它的ExportSettings.TargetType設(shè)置到面板(Panel)中,以便讓打印子系統(tǒng)處理子元素。
如果控件沒(méi)有指定ExportSettings.TargetType的附加屬性,則該控件會(huì)被打印子系統(tǒng)忽略,并且不會(huì)出現(xiàn)在打印文檔中。這也適用于未設(shè)定IsPrintingMode屬性的編輯器。
最后需要注意的是,ImageEdit源屬性被簡(jiǎn)單地綁定到單元格值屬性(來(lái)自數(shù)據(jù)上下文)上。因此,您可以很容易地獲取單元格值。
現(xiàn)在,在設(shè)置好樣式后,您只需要設(shè)置列的PrintCellStyle屬性:
注:每個(gè)PrintCellStyle都會(huì)影響特定單元格的外觀。默認(rèn)情況下,單元格會(huì)在默認(rèn)行模板中排列成一行。如果您想完全改變打印行的外觀,請(qǐng)參閱文章"如何自定義DXGrid打印外觀"。
就復(fù)選框(CheckBox)而言,如果您想用有意義的文本表示來(lái)取代標(biāo)準(zhǔn)的復(fù)選框打印外觀,則可將TextEdit放入單元格的顯示模板內(nèi),再通過(guò)一個(gè)轉(zhuǎn)換器將其文本屬性綁定到單元格值上(該轉(zhuǎn)換器會(huì)返回適當(dāng)?shù)奈谋荆?
在WPF中完成這項(xiàng)任務(wù)的另一種方法就是在顯示模板中定義觸發(fā)器,然后將其綁定到編輯器的IsCheked屬性上,再通過(guò)觸發(fā)器setter處理單元格文本。在這種情況下,無(wú)需任何后置代碼。
注:在Silverlight中沒(méi)有觸發(fā)器。因此,上述方法只能在WPF應(yīng)用程序中使用。
如果您在某些單元格中使用了多行編輯器(例如MemoEdit),在打印過(guò)程中有必要將文本封裝到編輯器中,對(duì)單元格進(jìn)行渲染。該解決方案與上文所述的方案類(lèi)似。您可將TextEdit放入單元格的顯示模板中,將其文本屬性綁定到單元格值上,然后將編輯器的TextWrapping屬性設(shè)置為渲染(Wrap)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)