你能告诉我创建自定义silverlight控件的正确方法是什么吗?我想制作一个由三个其他控件组成的控件:textblock,autocompletebox和image。文本块将作为自动完成框的标签,图像将提供额外的工具提示。我的问题是:我应该继承什么类型的课程?如何公开内部控件的属性和事件?我发现我可以通过在容器类中创建额外的依赖项属性并使用这样的回调函数来设置子控件的值:
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(MyCustomControl),
new PropertyMetadata(
default(string),
(source, args) => (source as MyCustomControl).TxtValue.Text = (string)args.NewValue
)
);
但是,只有将子控件中的属性声明为依赖项属性时,此方法才有效。但是例如在autocompletebox中有一个名为ValueMemberBinding的属性,它不是依赖属性,我找不到如何从MyCustomControl公开它的方法。
答案 0 :(得分:0)
我的问题是:我应该继承什么类型的课程?
您继承自Control
班。
如何公开内部控件的属性和事件?
对于属性 - 如果使用xaml设置控件内容和布局,则需要为每个元素分配一个x:Name属性,该属性是您要公开的属性。然后,他们可以在代码隐藏中使用它们,您可以将它们公开为公共属性。
对于事件,您订阅内部元素的事件并将它们链接到控件公共事件。