RadSkinManager

本文提供了以下信息:

Telerik UI for ASP。净AJAXNinja image

SkinManager是Telerik UI for ASP。净AJAX,一个具有 120+ 组件的专业级UI库,用于构建现代和功能丰富的 应用程序。想要试用它,可以注册一个30天的免费试用期。

什么是RadSkinManager?

有多种方法可以指定Telerik控件的皮肤——以声明方式或编程方式作为控件定义的一部分,在页面级或应用程序级使用ASP。NET主题机制或全局应用程序中使用web的所有页面。配置文件。但是,在有些情况下,当有大量Telerik控件时,这些方法可能不太方便,特别是当您想为其中一些控件定义全局样式设置,而又为其中一个子集应用了特定的皮肤时。

这就是RadSkinManager控件发挥作用的地方。其直观的设计时选项允许您为页面上的Telerik控件定义全局蒙皮,以及通过TargetControls集合为特定控件定义粒度设置。下面是几个屏幕截图。

RadSkinManager -设计时间

RadSkinManager - TargetControls集合

如何使用RadSkinManager?

默认情况下皮肤属性RadSkinManager是一个空字符串。如果将该属性设置为不同的值,并且将该控件的Enabled设置为true,则管理器将自动将指定的外观应用到表单上的所有Telerik控件。

如果你设置ShowChooser属性设置为true时,管理器将显示运行时的RadComboBox作为其智能标记的一部分,其中包含所有嵌入的皮肤,您可以在其中选择皮肤。此外,在TargetControls(持久化在ViewState中)集合中,您可以添加每个控件的皮肤设置(settingTargetControl -> ID而且TargetControl >皮肤)与…并列启用属性值启用/禁用此特定设置。您可以选择表单上的任何Telerik控件,管理器将递归地找到所有iskinableccontrol实例来设置它们的皮肤。

下面是一个应用的RadSkinManager定义示例注意皮肤的所有Telerik控件没有皮肤控件的单独属性显式设置,或者不包含为蒙皮控件TargetControls收集。对于其余的组件,要么是通过它们定义的皮肤皮肤财产或通过各自TargetControls定义将被传播:

 

由于在页面/母版页上只能有一个RadSkinManager实例,如果在页面场景中有母版/内容页或用户控件,请考虑使用RadSkinManager.GetCurrent(页面)方法以编程方式指定要由管理器蒙皮的Telerik控制目标。下面的代码片段演示了如何利用skinName ApplySkin(控制)在母版/内容页或页面/用户控制配置下的方法:

protected void Page_Load(对象sender, EventArgs e){//使用this.Page. master来引用母版Telerik.Web.UI.RadSkinManager.GetCurrent(this.Page)。ApplySkin (RadMenu1“WebBlue”);//用户控件
受保护的子Page_Load(ByVal sender作为对象,ByVal e作为EventArgs)'使用this.Page.Master来引用母版Telerik.Web.UI.RadSkinManager.GetCurrent(Me.Page)。ApplySkin (RadMenu1“WebBlue”)用户控制结束子

是一样的INamingContainer(RadSkinManager所在的页面),您还可以选择使用TargetControls。添加(id、skinName)方法。

要限制在RadSkinManager的组合框皮肤选择器模式中显示的皮肤(当设置其ShowChooser属性设置为true),连接控件的PreRender事件,获得对内部RadComboBox实例的引用,该实例包含皮肤名称,并隐藏您不希望显示为列表项选项的皮肤。下面是一些示例代码片段:

  ---------------------------  
protected void RadSkinManager1_PreRender(对象发送器,EventArgs e) {RadSkinManager1. protected void RadSkinManager1_PreRender(对象发送器,EventArgs e)皮肤=“黑色”;RadComboBox skinChooser = RadSkinManager1.FindControl(“skinChooser”)作为RadComboBox;skinChooser。SelectedValue = "黑色";foreach (RadComboBoxItem项在skinselector . items) {if(项。Text != "黑色"){项目。可见= false;}}}
受保护的子RadSkinManager1_PreRender(ByVal sender As Object, ByVal e As EventArgs)皮肤= "Black" Dim skinChooser As RadComboBox = TryCast(RadSkinManager1.FindControl("SkinChooser"), RadComboBox) skinChooser.SelectedValue = "Black" For Each item As RadComboBoxItem In skinChooser.Items If item.Text <> "Black" Then item.Visible = False End If Next End Sub

服务器端细节

控件公开两个服务器端事件-OnSkinChanging而且OnSkinChanged.的OnSkinChanging事件可以取消,以获取将要应用的皮肤或设置一个新的皮肤(使用e.Skin传入各自处理程序的参数)。

此外,还有两个可用的属性用于指定在何处持久化所应用的皮肤的信息——PersistenceKey和PersistenceMode:

  • PersistenceKey默认值为“Telerik。皮肤如果未指定自定义值。

  • PersistenceMode默认为视图状态,但您可以指定会话饼干为了存储皮肤设置在会话或浏览器cookie,如果你喜欢。

如果在页面上应用了主题,RadSkinManager的一般皮肤属性设置将被忽略。

Telerik控件或特定控件的全局皮肤设置(在web.config中定义)将被RadSkinManager定义覆盖。

使用RadSkinManager应用自定义皮肤

从2011年第二季度开始,RadSkinManager也可以使用自定义皮肤。在遵循下面描述的步骤之后,它将以与应用内置皮肤相同的方式将自定义皮肤应用到Telerik控件。

使用皮肤管理器控件使用自定义皮肤有两种方法——to将自定义皮肤放在一个文件夹中提供一条通往它的路,或者构建程序集并引用它:

通过指定路径加载皮肤

将您的自定义皮肤放在应用程序下的文件夹中,并提供通往它的路径,将使它们对皮肤管理器可用,并将它们视为非嵌入式皮肤。这意味着它将能够应用它们,但它们不会在SkinChooser中显示为选项。

为了通过指定路径加载皮肤,你需要采取的步骤是:

  1. 在您的web应用程序下为皮肤创建一个文件夹,并在其中为每个皮肤添加一个单独的文件夹。

    • 内部文件夹必须具有与皮肤本身相同的名称。
    • .css文件应该放在带有皮肤名称的文件夹中,并应遵守以下命名约定:ControlName。SkinName . css在哪里(ControlName)是控件的名称没有Rad前缀(日历,编辑器,网格等)和(SkinName)自定义皮肤的名称。
    • 控件类型必须有一个文件夹,即使它是空的,也不包含任何资源(如精灵)。当使用轻量级渲染模式时,通常会出现这种情况。

    用于RadCalendar的名为Yellow的自定义皮肤的示例文件夹结构。

    构造皮肤文件夹

  2. 添加一个SkinReference在RadSkinManager中,设置路径属性指向包含蒙皮文件夹的文件夹的名称。

    ASP。网

        
  3. 设置EnableEmbeddedSkins属性的控件的属性,您希望通过管理器对其进行换肤.把他们的皮肤属性设置为所需自定义皮肤的名称。

    如果皮肤文件夹不存在或具有控件名称的文件夹不存在,则不会注册自定义样式表,也不会抛出错误。

  4. 如果你有RadStyleSheetManager在页面上,您必须在web中添加以下键。的配置顺序要注册的自定义样式表

    . config

       .

    RadStyleSheetManager将组合并提供该文件夹中的所有样式表,包括用于当前页面上未使用的控件的样式表,以及用于其他自定义皮肤的样式表。

  5. 确保自定义皮肤样式表根据注册方法引用图像——是否使用RadStyleSheetManager。这将改变提供样式表的URL,样式表中的资源相对于请求路径。

    • 当通过RadStyleSheetManager服务自定义皮肤样式表时,皮肤文件中的url应该声明一个从皮肤文件夹名称开始的路径,因为服务它们的处理程序位于应用程序的根:

      CSS

      .RadCalendar_Yellow .rcTitlebar {background: #1b1b1b 0 -1000px repeat-x url('MySkins/Yellow/Calendar/sprite.gif');}
    • 如果有的话没有RadStyleSheetManager在该页上,皮肤文件中的url应该声明一个从控制文件夹名开始的路径,因为<链接>元素指向实际的样式表:

      CSS

      .RadCalendar_Yellow .rcTitlebar {background: #1b1b1b 0 -1000px repeat-x url('Calendar/sprite.gif');}

RadSkinManager不区分不同的RenderModes一个控件可以有。这意味着它将在所有情况下用控件名注册相同的文件。

按钮类型的控件(RadButton, RadPushButton, RadImageButton, RadLinkButton, RadToggleButton, RadCheckBox, RadRadioButtonList, RadCheckBoxList)将只注册一个样式表,即CustomSkinName \ Button.CustomSkinName.css.因此,您需要将它们的所有自定义皮肤都放在该文件中。

从外部程序集加载皮肤

如果您创建了一个包含皮肤并正确引用它的程序集,RadSkinManager将以与嵌入的Telerik控件皮肤相同的方式对待自定义皮肤。

你应该遵循的步骤是:

  • 按照本文提供的指导原则创建程序集并注册它:如何从外部程序集加载皮肤

  • 添加一个SkinReference在RadSkinManager中,设置组装属性指向加载的程序集名称。

    

你也可以在web.config中添加这个引用:

  
  • 设置EnableEmbeddedSkins属性的控件的属性,您希望通过管理器对其进行换肤真正的
在本文中
Baidu
map