【问题标题】:How can I add a nested design-time property to a user control?如何将嵌套的设计时属性添加到用户控件?
【发布时间】:2013-10-09 21:58:16
【问题描述】:

我有一个包含许多面板控件的用户控件。用户控件具有根据用户控件中包含的一些变量的值设置每个面板的可见性的逻辑。

我想通过添加以下枚举来增强此功能:

public enum Visibility
{
    Default,
    Always,
    Never
}

其中Default 将使用当前逻辑设置面板的可见性,但Always 将(显然)使面板始终可见,而Never 将始终隐藏面板。

我还想添加一个名为 PanelVisiblity 的“嵌套”设计时属性,开发人员可以扩展它,查看下面列出的面板名称,并允许他们从 Visibility 枚举中分配一个值每个人。

如果我添加这样的属性:

public partial class MyControl : UserControl
{
    public Visibility ActivePanel { get; set; }
    public Visibility CodePanel { get; set; }
}

ActivePanelCodePanel 属性出现在 Visual Studio 的“属性”窗口中,我可以将它们设置为枚举中的三个值之一。但是,当我重构代码以尝试创建这样的嵌套属性时:

public partial class MyControl : UserControl
{
    public class PanelVisibility
    {
        public enum Visibility
        {
            Default,
            Always,
            Never
        }

        public Visibility ActivePanel { get; set; }
        public Visibility CodePanel { get; set; }
    }
}

我没有得到一个可扩展的PanelVisiblity 属性,我得到一个禁用的Visiblity 属性,其中的值是类的命名空间加上“PanelVisibility”。

我已经在 Google 上搜索了该搜索的多种措辞,但找不到与我正在寻找的内容相似的任何内容。

任何方向都将不胜感激。

【问题讨论】:

    标签: c# winforms visual-studio-2010 c#-4.0 properties


    【解决方案1】:

    您似乎正在寻找与 DockPanel 提供的功能相同的功能。

    我建议您不要重新发明轮子,而应该使用一个可用的实现,例如:

    http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.aspx

    http://dockpanel2012.codeplex.com/

    https://github.com/dockpanelsuite/dockpanelsuite

    【讨论】:

    • 我查看了您提供的链接,但认为这不能解决我的问题。首先,我使用的是 Visual Studio 2010(在我的问题中添加了标签),因此 codeplex 示例没有帮助。另外,我仍然想知道如何创建嵌套属性。除了上述示例之外,我还有其他需要使用它们的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多