C# 向visual studio designer公开自定义属性
我正在创建一个自定义按钮,它是usercontrol下的子类。我试图找出如何向设计器公开enum属性,以便在使用设计器时设置enum。我必须添加什么才能使控件的属性显示在设计器上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 };
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,我将看看是否能够正确地实现正确的设计模式。