从设计器(Visual Studio 2010)隐藏WPF控件的属性

6

我是使用Visual Studio 2010和WPF。

我正在创建一个继承自ContentControl的新控件,我想隐藏Content属性,以便在设计时在属性窗口中不可见。

我尝试了以下代码:

[Browsable(false)]

我希望您能够像在WinForms中那样做,但它并没有起作用。有任何解决方法吗?谢谢。

更多的代码可能会有帮助,例如你试图隐藏的属性的定义。 - Paul Sasik
可能是 https://dev59.com/33VD5IYBdhLWcg3wXaed 的重复问题。 - Nayan
[Browsable(false)] private new object Content { get { return base.Content; } set { base.Content = value; } } - Michelle
@Nayan,这个问题与你发送的链接不同。 - Michelle
1个回答

6

Michelle,

您的属性需要设置为public:

[Browsable(false)]
public new object Content
{
    get { return base.Content; }
    set { base.Content = value; }
}

一旦您将其设置为公共,它将从属性窗口隐藏。
使用私有:
使用公共:
谢谢

嗨@Jason,感谢您的帮助。现在它有效了。但我有另一个问题...当我从基类创建一个新类继承时,我已经在基类中声明了它,然后“Content属性”再次出现在“Properties”窗口中。然而,如果我将“Content属性”重新声明到新类中,它将从“Properties”窗口中消失。为什么会这样发生? - Michelle
@Michelle 不确定我是否理解正确,但我成功创建了一个继承自ContentControl的“BaseControl”类。然后我的“MyControl”类继承自“BaseControl”。如果我在任何一个类中放置公共新对象内容,则它将在表单上保持隐藏。 - CodeLikeBeaker
如果您在“MyControl”中不再次编写属性,则该属性将出现在属性窗口中。但是,当我在表单中执行相同操作时,我不必在派生类中重新编写属性。为什么在WPF中会发生这种情况? - Michelle
等等,为了保护设计师不能编辑 DP,我们必须将其公开?这显然是适得其反的,不是吗? - IAmJersh
@TheHitchenator 说实话,我9年前回答过这个问题。我不再使用WPF,所以无法给你提供一个确切的答案。我很抱歉,但是看起来这确实是没有什么帮助的。 - CodeLikeBeaker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接