0

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

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

public enum Visibility
{
    Default,
    Always,
    Never
}

whereDefault将使用当前逻辑来设置面板的可见性,但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”。

我用谷歌搜索了这个搜索的许多变体,但一直找不到像我要找的东西。

任何方向将不胜感激。

4

1 回答 1

0

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

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

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

http://dockpanel2012.codeplex.com/

https://github.com/dockpanelsuite/dockpanelsuite

于 2013-10-09T22:15:51.013 回答