【问题标题】:Exposing custom property to visual studio designer向 Visual Studio 设计师公开自定义属性
【发布时间】:2015-06-02 21:40:51
【问题描述】:

我正在创建一个自定义按钮,该按钮是用户控件下的子类。我试图弄清楚如何将枚举属性公开给设计器,以便在使用设计器时设置枚举。我必须添加什么才能使控件的属性显示在设计器上?

namespace App1
{
    public enum foodType
    {
        Appetizers,
        Breakfast,
        Lunch,
        Dinner,
        Desserts,
        Drinks
    };

    public sealed partial class FoodTypeButton : UserControl
    {
        public foodType type
        {
            get { return type; }
            set { type = value; }
        }
        public FoodTypeButton()
        {
            this.InitializeComponent();
        }
    }
}

我想让这个按钮有一个枚举的原因是我可以将所有 6 个按钮传递给一个方法。这一种方法将检查枚举并调用相应的按钮网格。

我现在有

appetizerButtonClicked()
{
//call other grid
}

breakfastButtonClicked()
{
//call other grid
}

lunchButtonClicked()
{
//other grid
}

等等……

也许有更好的方法来处理这个问题?

【问题讨论】:

  • 全部删除。您的数据模型 (FoodType) 不属于 UI。为您尝试做的任何事情创建一个合适的 ViewModel 并保留 UI。
  • @HighCore 枚举的唯一原因是我可以将它传递给一种方法,而不是创建 5 种不同的方法。并且根据该枚举,它将显示相应的按钮网格。我稍后会更新我的问题。
  • 你有几个误解。首先,您不会“调用” UI。你需要的是一个 TabControl。其次,您的数据模型不属于 UI。创建合适的 ViewModel 并使用合适的 DataBinding。
  • 感谢@HighCore!,我一直在阅读有关 MVVM 的内容,我将看看是否可以正确实现正确的设计模式。

标签: c# wpf visual-studio mvvm wpf-controls


【解决方案1】:

它在设计师中向我展示。确保您已正确添加该属性。 如果我的猜测是正确的,那么您将错误地给出属性定义。它会抛出stackoverflow异常。在给出的示例代码中,您忘记添加属性的私有成员定义。

    private foodType type;
    public foodType Type
    {
        get { return type; }
        set { type = value; }
    }

现在您可以在设计器中获取 Type 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2022-08-23
    • 1970-01-01
    相关资源
    最近更新 更多