0

描述

如果您为 UserControl 声明 EasingMode 的公共属性,则不会显示在 Visual Studio 的属性中。这是一种奇怪的行为,仅适用于EasingMode,不适用于其他自定义属性。

问题

如果您有EasingMode的属性,它可以在 XAML 中使用并且它是有效的属性。但我需要从Visual Studio中的Properties访问此属性。来自简单枚举的简单公共属性必须在设计时像其他属性一样可访问,但它不适用于EasingMode,仅适用于EasingMode

问题

我知道我可以直接从代码或 XAML 更改属性的值,但是

  1. 我需要找出为什么这个属性有这种奇怪的行为。
  2. 如何解决这个问题?在 Visual Studio 的设计时属性面板中显示此枚举属性的解决方案是什么?

例子

看这个例子

[Bindable(true)]
[Browsable(true)]
[Category("TEST")]
public EasingMode A1
{
    get { return (EasingMode)this.GetValue(A1Property); }
    set { this.SetValue(A1Property, value); }
}
public static readonly DependencyProperty A1Property = DependencyProperty.Register("A1", typeof(EasingMode), typeof(UserControl1));

[Bindable(true)]
[Browsable(true)]
[Category("TEST")]
public MessageBoxButton A2
{
    get { return (MessageBoxButton)this.GetValue(A2Property); }
    set { this.SetValue(A2Property, value); }
}
public static readonly DependencyProperty A2Property = DependencyProperty.Register("A2", typeof(MessageBoxButton), typeof(UserControl1));

A1 和 A2 是来自简单枚举的简单属性,但 A1 不会出现在Visual Studio的属性面板中。测试它并找出它并帮助我:)

截屏

4

2 回答 2

0

如果我对您的理解正确,您想UserControl在 Visual Studio 设计器中查看您的属性吗?如果这是正确的,请查看MSDN上的组件设计时属性页面。

在那里,您会发现许多可以在属性上定义的有用属性:

[Category("Alignment"), Description("Specifies the alignment of text.")]
public ContentAlignment TextAlignment { //... }

来自 MSDN。

更新>>>

对不起,我之前没有完全理解你。但是,既然我这样做了并且我已经测试了您的问题,我可以告诉您您的代码确实有效:

在此处输入图像描述

您只需要在设计器自行更新之前构建您的项目。

于 2013-09-02T11:47:37.973 回答
0

我认为您必须将 Browsable Attribute 放在您的财产上。

http://msdn.microsoft.com/en-us/library/system.componentmodel.browsableattribute.aspx

谢谢

于 2013-09-02T11:55:36.597 回答