【问题标题】:Poperty of EasingMode is not apper in Properties of Visual StudioEasingMode 的属性未出现在 Visual Studio 的属性中
【发布时间】:2013-09-05 12:12:28
【问题描述】:

说明

如果您为 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 StudioProperties 面板中。测试它并找出它并帮助我:)

【问题讨论】:

    标签: c# wpf xaml wpf-controls


    【解决方案1】:

    如果我理解正确,您想在 Visual Studio 设计器中查看 UserControl 的属性吗?如果这是正确的,请查看 MSDN 上的Design-Time Attributes for Components 页面。

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

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

    来自 MSDN。

    更新>>>

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

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

    【讨论】:

    • 不,我可以看到我的所有自定义属性。如果您再次阅读并测试这部分源代码,那么您可以找到它...只是 A1 属性未显示。如果您声明 EasingMode 的属性,那么它会在设计时从属性中消失。请测试它并尝试帮助我:)
    • 我真的很感谢,但我一次又一次地测试它,我没有机会找到错误的点。我在这里分享我的测试项目,如果你能分享你的测试项目,我将不胜感激。查看这些PROJECT LinkSS Link
    • 我刚刚将 your 代码添加到我的项目中。一开始没有出现该属性,后来我在Visual Studio中选择了Build Solution,然后就出现了。我不能分享这个项目,因为它是一个工作应用程序。
    • 好的,我和你分享了我的项目。你能测试一下吗:),正如你所见,它没有出现。您的项目是 WPF 项目吗?
    • 对不起,我只有 VS2010,所以我无法打开您的项目……也许是 VS2012 的问题?是的,我的项目是 WPF 项目。
    【解决方案2】:

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

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

    谢谢

    【讨论】:

    • 哎呀,不。[Browsable(true)] 在这种情况下不起作用,测试一下 :) 这真的很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多