代码之家  ›  专栏  ›  技术社区  ›  Peter

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

  •  0
  • Peter  · 技术社区  · 16 年前

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

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

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

    如何创建这样的控件?

    2 回复  |  直到 16 年前
        1
  •  7
  •   Mark Ingram    16 年前

    您可以使用 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中的父内容控件。

        2
  •  0
  •   Jobi Joy    16 年前