我很确定这是一个愚蠢的问题,但我所有的尝试都失败了。
我有一个自定义控件,我希望有一个复杂的属性暴露许多属性。我想这样做,因为我将在可视属性管理器中有一个可扩展属性,所以我可以很容易地设置子属性,因为它们在父属性中分组在一起。 这是我做了什么架构:UserControl自定义属性变灰
public partial class QViewer : UserControl
{
private Shortcuts toolsShortcuts = new Shortcuts();
private TestProp testProp = new TestProp();
public Shortcuts ToolsShortcuts { get { return toolsShortcuts; } }
public TestProp Test { get { return testProp; } }
}
public struct TestProp
{
public bool DoIt;
public DateTime Date;
}
public class Shortcuts
{
Keys toolArrow = Keys.None;
public Keys Arrow
{
get { return toolArrow; }
set { ... }
}
}
}
当我插入我的自定义控件的形式(使用相同的解决方案中另一个项目),我打开的属性,既快捷方式和测试是灰色的,不可扩展,所以我不能在它们内部设置属性。
有什么问题?有没有更好的方法来组属性比创建一个类或结构?
感谢大家!
我会接受你的答案,因为它是认真细致的(!因为照片中的宝宝是伟大的,我是家长太...)。一个问题:想象一下我想创建一个快捷方式类:是否需要重写_ExpandableObjectConverter_派生类中的某个特定属性,或者我可以在您告诉我的每个属性中调用base.prop()? – Marco
不完全确定你的意思,但是你必须实现ConvertFrom(...)方法将输入的值转换回你的ShortCuts类的类型。在我的回答(http://msdn.microsoft.com/zh-cn/library/aa302326.aspx)中查看第二个链接的“添加可扩展属性支持”一节下的第5点。 –
非常感谢,真的非常感谢!我必须学习(老实说,我认为实现复杂的属性更容易),但是你让我走上了正确的道路。再次感谢!! :) – Marco