我已经创建了一个自定义控件,并希望创建一个属性(在Blend的设计时可用),它可以提供下拉列表或组合框。然后设计者将选择一个可用选项。非常类似于“公共属性”选项卡中的“光标”组合,除了我想要完全控制组合中的项目。选择可能会有所不同,因此我不能使用硬编码的“枚举”。
我知道可以声明这样的设计属性:
protected string mString;
[Category("Common Properties")]
[DisplayName("My Friendly Name")]
public string MyFriendlyName
{
get { return mString; }
set { mString= value; }
}
在上面的案例中,“我的友好名称”只是一个字符串。用户可以输入他想要的任何内容。
protected Uri mPathname;
[Category("Common Properties")]
[DisplayName("Resource pathname")]
public Uri MyResPathname
{
get { return mPathname; }
set { mPathname = value; }
}
在上面的例子中,“资源路径名”有一个组合框,但项目列表由Blend处理。
如果我使用枚举,结果是包含我的项目的组合,但是我无法更改项目列表。
public enum MyChoices
{
Aaa,
Bbb
}
public class MyButton : Button
{
(...)
[Category("Common Properties")]
public MyChoices MyChoice
{
get { return (MyChoices)GetValue(MyChoiceProperty); }
set { SetValue(MyChoiceProperty, value); }
}
public static readonly DependencyProperty MyChoiceProperty =
DependencyProperty.Register("MyChoice",
typeof(MyChoices),
typeof(MyButton ),
new UIPropertyMetadata(
(MyChoices)MyChoices.Aaa,
OnMyChoiceChangedCallback));
}
在上面的示例中,选项在枚举中进行了硬编码...
有人可以帮忙吗?我确定这很容易,我很亲密,但现在我要去圈子了。