将控件的XAML内容设置为该控件的属性

时间:2011-04-07 10:13:14

标签: c# silverlight xaml

我有一个用户控件:

public partial class MyControl : UserControl
{
    private static readonly DependencyProperty pageContentProperty = DependencyProperty.Register("PageContent", typeof(UIElement), typeof(ActionPage), new PropertyMetadata(null));

    public UIElement PageContent
    {
        get { return (UIElement)base.GetValue(pageContentProperty); }
        set { base.SetValue(pageContentProperty, value); }
    }

    public MyControl()
    {
        InitializeComponent();
    }

    // More code
}

现在,如果我在XAML中使用它,我必须这样做:

<l:MyControl>
    <l:MyControl.PageContent>
         <TextBlock Text="Lorum Ipsum"/>
    </l:MyControl.PageContent>
</l:MyControl>

但我想这样做:

<l:MyControl>
    <TextBlock Text="Lorum Ipsum"/>
</l:MyControl>

目前,如果我执行此操作,则会使用TextBlock替换控件的整个内容(这对于正常的UserControl有意义)但是如何覆盖此行为?

1 个答案:

答案 0 :(得分:2)

您可以尝试将ContentProperty属性添加到PageContent媒体资源中: -

[ContentProperty("PageContent")]
public partial class MyControl : UserControl