2011-04-07 49 views
1

我有一個用戶控件作爲這樣的屬性:控制的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控制的全部內容(WH ich對於一個正常的UserControl有意義),但我怎麼能覆蓋這種行爲?

回答

2

你可以嘗試添加ContentProperty屬性您PageContent屬性: -

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

的ContentProperty不能適用於財產,但需要應用到類。所以我只是將屬性移動到類定義爲 '[ContentProperty(「PageContent」)] public Partical class MyControl' 它工作。感謝您讓我走上正軌。我將你的答案標記爲答案,但也許只是修改它以備將來參考。 再次感謝。 – Cornelius 2011-04-07 11:14:16

+0

@Cornelius:D'oh相應編輯。 – AnthonyWJones 2011-04-07 11:51:56

+0

嗨AnthonyWJones! 當ContentProperty是一個集合時,如何直接在xaml中設置。 – MasterLuV 2015-01-15 06:56:33