2008-10-16 74 views
0

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

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

当我使用控制我应该只可以使用:

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

如何创建这样的控制?

回答

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中的父内容控件即可。

+0

完美,我可以有两个内容? – Peter 2008-10-16 09:59:59

相关问题