C# 向visual studio designer公开自定义属性

C# 向visual studio designer公开自定义属性,c#,wpf,visual-studio,mvvm,wpf-controls,C#,Wpf,Visual Studio,Mvvm,Wpf Controls,我正在创建一个自定义按钮,它是usercontrol下的子类。我试图找出如何向设计器公开enum属性,以便在使用设计器时设置enum。我必须添加什么才能使控件的属性显示在设计器上 namespace App1 { public enum foodType { Appetizers, Breakfast, Lunch, Dinner, Desserts, Drinks };

我正在创建一个自定义按钮,它是usercontrol下的子类。我试图找出如何向设计器公开enum属性,以便在使用设计器时设置enum。我必须添加什么才能使控件的属性显示在设计器上

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
}
等等


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

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

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

现在可以在designer中获取Type属性

删除所有这些。您的数据模型FoodType不属于UI。为您尝试执行的任何操作创建一个适当的ViewModel,而不使用UI。@HighCore使用枚举的唯一原因是我可以将它传递给一个方法,而不是创建5个不同的方法。根据该枚举,它将显示相应的按钮网格。我稍后会更新我的问题。你有几个误解。首先,您不需要调用UI。您需要的是TabControl。第二,同样,您的数据模型不属于UI。创建适当的ViewModel并使用适当的数据绑定。谢谢@HighCore!,我一直在阅读MVVM,我将看看是否能够正确地实现正确的设计模式。