共用方式為


CatalogPartChrome 類別

定義

讓開發人員僅覆寫 CatalogPart 區域中 CatalogZoneBase 控制項之選取區段的呈現。

public ref class CatalogPartChrome
public class CatalogPartChrome
type CatalogPartChrome = class
Public Class CatalogPartChrome
繼承
CatalogPartChrome

範例

下列程式代碼範例示範如何使用 CatalogPartChrome 類別覆寫區域中控件CatalogZoneBase的預設轉譯CatalogPart

程式代碼範例有三個部分:

  • 使用者控制元件,可讓您變更網頁元件頁面上的顯示模式。

  • 裝載範例中所有控件的網頁。

  • 類別,其中包含自定義 CatalogPartChrome 類別和 CatalogZoneBase 區域的原始程式碼。

程式代碼範例的第一個部分是使用者控件。 使用者控制件的原始碼來自另一個主題。 若要讓此程式代碼範例正常運作,您必須從逐步解說 :變更網頁元件頁面上的顯示模式 主題中取得使用者控件的 .ascx 檔案,並將檔案放在與本程式代碼範例中.aspx頁面相同的資料夾中。

範例的第二個部分是網頁。 請注意,檔案頂端有指示 Register 詞可註冊已編譯的元件和標籤和標籤前置詞。 另請注意,頁面會使用 元素 <aspSample:MyCatalogZone>來參考自定義目錄區域。

<%@ Page Language="C#" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" %>
<%@ Register TagPrefix="uc1" TagName="DisplayModeMenuCS" Src="~/DisplayModeMenuCS.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
  <title>Web Parts Page</title>
</head>
<body>
  <h1>Web Parts Demonstration Page</h1>
  <form runat="server" id="form1">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuCS runat="server" ID="DisplayModeMenu" />
  <br />
  <table cellspacing="0" cellpadding="0" border="0">
    <tr>
      <td valign="top">
    <asp:webpartzone id="SideBarZone" runat="server" 
        headertext="Sidebar">
        <zonetemplate>
        </zonetemplate>
      </asp:webpartzone>
      <aspSample:MyCatalogZone ID="CatalogZone1" runat="server">
      <ZoneTemplate>
          <asp:ImportCatalogPart ID="ImportCatalog" runat="server" />
      </ZoneTemplate>
    </aspSample:MyCatalogZone>
      </td>
      <td valign="top">
    <asp:webpartzone id="MainZone" runat="server" headertext="Main">
         <zonetemplate>
        <asp:label id="contentPart" runat="server" Title="Content">
              <h2>Welcome to My Home Page</h2>
              <p>Use links to visit my favorite sites!</p>
            </asp:label>
         </zonetemplate>
       </asp:webpartzone>
      </td>
      <td valign="top">
      </td>
    </tr>
  </table>
  </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.VB.Controls" %>
<%@ Register TagPrefix="uc1" TagName="DisplayModeMenuVB" Src="~/DisplayModeMenuVB.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
  <title>Web Parts Page</title>
</head>
<body>
  <h1>Web Parts Demonstration Page</h1>
  <form runat="server" id="form1">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuVB runat="server" ID="DisplayModeMenu" />
  <br />
  <table cellspacing="0" cellpadding="0" border="0">
    <tr>
      <td valign="top">
    <asp:webpartzone id="SideBarZone" runat="server" 
        headertext="Sidebar">
        <zonetemplate>
        </zonetemplate>
      </asp:webpartzone>
      <aspSample:MyCatalogZone ID="CatalogZone1" runat="server">
      <ZoneTemplate>
          <asp:ImportCatalogPart ID="ImportCatalog" runat="server" />
      </ZoneTemplate>
    </aspSample:MyCatalogZone>
      </td>
      <td valign="top">
    <asp:webpartzone id="MainZone" runat="server" headertext="Main">
         <zonetemplate>
        <asp:label id="contentPart" runat="server" Title="Content">
              <h2>Welcome to My Home Page</h2>
              <p>Use links to visit my favorite sites!</p>
            </asp:label>
         </zonetemplate>
       </asp:webpartzone>
      </td>
      <td valign="top">
      </td>
    </tr>
  </table>
  </form>
</body>
</html>

此範例的第三個部分包含自定義類別目錄元件 Chrome 和目錄元件區域的實作。 MyCatalogZone CatalogZone擴充和覆寫CreateCatalogPartChrome以傳回自定義類別目錄元件 Chrome。 MyCatalogPartChrome 會變更 方法中 CreateCatalogPartChromeStyle 目錄控制件的背景色彩。 區域的背景色彩會在 方法中 PerformPreRender 變更,而文字會新增至 方法中的 RenderPartContents 目錄元件。

namespace Samples.AspNet.CS.Controls
{

    /// <summary>
    /// Summary description for source
    /// </summary>
    public class MyCatalogPartChrome : CatalogPartChrome
    {
        public MyCatalogPartChrome(CatalogZoneBase zone)
            : base(zone)
        {
        }

        protected override Style  CreateCatalogPartChromeStyle(CatalogPart catalogPart, PartChromeType chromeType)
        {
            Style catalogStyle = base.CreateCatalogPartChromeStyle(catalogPart, chromeType);
            catalogStyle.BackColor = Color.Bisque;
            return catalogStyle;
        }

        public override void PerformPreRender()
        {
            Style zoneStyle = new Style();
            zoneStyle.BackColor = Color.Cornsilk;

            Zone.Page.Header.StyleSheet.RegisterStyle(zoneStyle, null);
            Zone.MergeStyle(zoneStyle);
        }

        protected override void  RenderPartContents(HtmlTextWriter writer, CatalogPart catalogPart)
        {
            writer.AddStyleAttribute("color", "red");
            writer.RenderBeginTag("p");
            writer.Write("Apply all changes");
            writer.RenderEndTag();
            catalogPart.RenderControl(writer);
        }

        public override void  RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart)
        {
            base.RenderCatalogPart(writer, catalogPart);
        }
    }

    public class MyCatalogZone : CatalogZone
    {
        protected override CatalogPartChrome  CreateCatalogPartChrome()
        {
            return new MyCatalogPartChrome(this);
        }
    }
}
Namespace Samples.AspNet.VB.Controls


    Public Class MyCatalogPartChrome
        Inherits CatalogPartChrome

        Public Sub New(ByVal zone As CatalogZoneBase)
            MyBase.New(zone)
        End Sub

        Protected Overrides Function CreateCatalogPartChromeStyle(ByVal catalogPart As System.Web.UI.WebControls.WebParts.CatalogPart, ByVal chromeType As System.Web.UI.WebControls.WebParts.PartChromeType) As System.Web.UI.WebControls.Style
            Dim editorStyle As Style
            editorStyle = MyBase.CreateCatalogPartChromeStyle(catalogPart, chromeType)
            editorStyle.BackColor = Drawing.Color.Bisque
            Return editorStyle
        End Function

        Public Overrides Sub PerformPreRender()
            Dim zoneStyle As Style = New Style
            zoneStyle.BackColor = Drawing.Color.Cornsilk

            Zone.Page.Header.StyleSheet.RegisterStyle(zoneStyle, Nothing)
            Zone.MergeStyle(zoneStyle)
        End Sub

        Protected Overrides Sub RenderPartContents(ByVal writer As System.Web.UI.HtmlTextWriter, ByVal catalogPart As System.Web.UI.WebControls.WebParts.CatalogPart)
            writer.AddStyleAttribute("color", "red")
            writer.RenderBeginTag("p")
            writer.Write("Apply all changes")
            writer.RenderEndTag()
            catalogPart.RenderControl(writer)
        End Sub

        Public Overrides Sub RenderCatalogPart(ByVal writer As System.Web.UI.HtmlTextWriter, ByVal catalogPart As System.Web.UI.WebControls.WebParts.CatalogPart)
            MyBase.RenderCatalogPart(writer, catalogPart)
        End Sub
    End Class

    Public Class MyCatalogZone
        Inherits CatalogZone

        Protected Overrides Function CreateCatalogPartChrome() As System.Web.UI.WebControls.WebParts.CatalogPartChrome
            Return New MyCatalogPartChrome(Me)
        End Function
    End Class
End Namespace

備註

Chrome 指的是周邊使用者介面 (UI) 元素,這些元素會框住區域中每個網頁元件控件或伺服器控制件。 控件的 Chrome 包含其框線、標題列,以及出現在標題列中的圖示、標題文字和動詞功能表。 Chrome 的外觀是在區域層級設定,並套用至區域中的所有控制件。

Web 元件控制項集使用 CatalogPartChrome 類別來呈現控制元件的 CatalogPart Chrome。 此外,這個類別也提供一種方式,讓開發人員自定義區域中任何 CatalogPart 控件 CatalogZoneBase 的轉譯。 例如,您可以覆寫 CreateCatalogPartChromeStyle 方法來自定義套用至 CatalogZoneBase 區域的某些特定樣式屬性。

類別 CatalogPartChrome 包含數個重要方法,當您想要覆寫控件的 CatalogPart 轉譯時,這些方法很有用。 其中一個是建 CatalogPartChrome 構函式,當您覆寫 CreateCatalogPartChrome 自定義 CatalogZoneBase 區域中的 方法以建立自定義 CatalogPartChrome 對象的實例時,會使用此建構函式。 另一個實用的方法是 方法 RenderPartContents ,可用來控制區域控件內容區域的轉譯 (,而不是頁首、頁尾和標題欄等 chrome 元素) 。 最後,如果您想要完整以程序設計方式控制轉譯 CatalogPart 控件的所有層面,您可以覆寫 RenderCatalogPart 方法。

給繼承者的注意事項

如果您繼承自 CatalogPartChrome 類別,則必須建立自定義 CatalogZone 區域以傳回自定義 CatalogPartChrome 類別。 此類別概觀的範例區段示範如何建立自定義 CatalogZone 區域以傳回自定義 CatalogPartChrome 類別。

建構函式

CatalogPartChrome(CatalogZoneBase)

初始化 CatalogPartChrome 類別的新執行個體。

屬性

Zone

取得相關聯 CatalogZoneBase 區域的參考。

方法

CreateCatalogPartChromeStyle(CatalogPart, PartChromeType)

建立樣式物件,該樣式物件為 CatalogPart 物件呈現的每一個 CatalogPartChrome 控制項提供樣式屬性。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
PerformPreRender()

執行必須在呈現 CatalogPart 控制項之前完成的工作。

RenderCatalogPart(HtmlTextWriter, CatalogPart)

呈現完整的 CatalogPart 控制項及其所有區段。

RenderPartContents(HtmlTextWriter, CatalogPart)

呈現 CatalogPart 控制項的主要內容區域,但不包括頁首和頁尾。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱