我想创建一个具有两个内容区域的Silverlight 2控件.标题和主要内容.所以控制将是:
<StackPanel>
<TextBlock Text=" CONTENT1 "/>
<Content with CONTENT2 "/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
当我使用控件时我应该能够使用:
<MyControl Text="somecontent">main content </MyControl>
Run Code Online (Sandbox Code Playgroud)
我该如何创建这样的控件?
您可以使用ContentProperty属性轻松完成此操作.
然后,您可以将您的代码定义为:
[ContentProperty("Child")]
public partial class MyControl: UserControl
{
public static readonly DependencyProperty ChildProperty = DependencyProperty.Register("Child", typeof(UIElement), typeof(MyControl), null);
public UIElement Child
{
get { return (UIElement)this.GetValue(ChildProperty); }
set
{
this.SetValue(ChildProperty, value);
this.content.Content = value;
}
}
Run Code Online (Sandbox Code Playgroud)
这将是你的标签中的任何默认内容(<MyControl Text="somecontent">main content </MyControl>
) - 将被设置为你的类的子属性.然后,一旦设置,您可以将其分配给您喜欢的任何控件.
编辑:
您可以拥有任意数量的内容,但只能有1个自动内容(通过ContentProperty属性指定).如果你想要两个,你可以这样做:
<MyControl>
<MyControl.Content1>Hello World</MyControl.Content1>
<MyControl.Content2>Goodbye World</MyControl.Content2>
</MyControl>
Run Code Online (Sandbox Code Playgroud)
您所要做的就是确保代码中具有匹配的依赖项属性.然后,在设置属性时,只需将其分配给XAML中的父内容控件.
归档时间: |
|
查看次数: |
2059 次 |
最近记录: |