0

我创建了一个基于 RadDock 控件的模板化 ASP.NET 用户控件。但是,将此类控件添加到 RadDockZone 会导致运行时错误,指出它只能包含 RadDock 控件。有没有办法解决这个问题?

模板化的用户控件标记

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TemplatedDock.ascx.cs" Inherits="TemplatedDock" %>
<telerik:RadDock ID="RadDock1" runat="server" EnableAnimation="True" DockHandle="Grip"     Resizable="True">
    <ContentTemplate>
        <asp:PlaceHolder ID="dockPlaceholder" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
</telerik:RadDock>

模板化用户控制代码隐藏

public partial class TemplatedDock : System.Web.UI.UserControl
{
    private ITemplate _content;

    [TemplateContainer(typeof(ContentContainer))]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateInstance(TemplateInstance.Single)]
    public ITemplate Content
    {
        get
        {
            return _content;
        }
        set
        {
            _content = value;
        }
    }
    void Page_Init()
    {
        if (_content != null)
        {
            ContentContainer container = new ContentContainer();
            _content.InstantiateIn(container);
            dockPlaceholder.Controls.Add(container);
        }
    }
}
public class ContentContainer : Control, INamingContainer{}

}

在 RadDockZone 中的使用

<telerik:RadDockZone ID="RadDockZone1" runat="server">
    <a:TemplatedDock>
        <Content>
             <telerik:RadGrid ID="someGrid" runat="server"></telerik:RadGrid>
        </Content>
    </a:TemplatedDock>
</telerik:RadDockZone>
4

1 回答 1

0

没有办法让这种情况发生。RadDockZone 必须只有 RadDock 控件作为子项。自定义控件具有不同的类型,因此会引发异常。该区域与 Dock 紧密耦合,以提供简单的集成,如拖放、状态保存等,这是有代价的。

于 2013-04-09T13:56:38.047 回答