如何创建具有两个内容区域的Silverlight控件

时间:2008-10-16 09:00:25

标签: silverlight

我想创建一个具有两个内容区域的Silverlight 2控件。标题和主要内容。所以控制权将是:

<StackPanel>
<TextBlock Text=" CONTENT1 "/>
<Content with CONTENT2 "/>
</StackPanel>

当我使用控件时,我应该可以使用:

<MyControl Text="somecontent">main content </MyControl>

如何创建这样的控件?

2 个答案:

答案 0 :(得分:7)

您可以使用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;
        }
    }

您要做的是标记中的任何默认内容(<MyControl Text="somecontent">main content </MyControl>) - 将被设置为您班级的子属性。然后,一旦设置完毕,您就可以将其分配给您喜欢的任何控件。

修改

您可以拥有任意数量的内容,但只能有1个自动内容(通过ContentProperty属性指定)。 如果你想要两个,你可以做到:

<MyControl>
  <MyControl.Content1>Hello World</MyControl.Content1>
  <MyControl.Content2>Goodbye World</MyControl.Content2>
</MyControl>

您所要做的就是确保代码中具有匹配的依赖项属性。然后,在设置属性时,只需将其分配给XAML中的父内容控件。

答案 1 :(得分:0)

你想要的是WPF HeaderedContentControl的Silverlight版本 你可以在这里试一试。 http://leeontech.wordpress.com/2008/03/11/headeredcontentcontrol-sample/