2010-01-20 57 views
1

我有一個自定義控件,我創建了具有在generic.xaml中定義的ContentPresenter。我可以成功地嵌入其他控件到自定義控制,但它似乎繼承自定義控件的佈局管理器:如何在Silverlight 3/4的自定義控件中指定要在ContentPresenter中使用的佈局管理器?

<Style TargetType="custom:Widget"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="custom:Widget"> 
       <Canvas x:Name="LayoutRoot"> 

       <!-- Custom Line, Ellipse code using Canvas from above... --> 

        <Grid> 
        <!-- This more local layout manager is overridden...why ? --> 

         <ContentPresenter x:Name="ContentPresenter" 
              Content="{TemplateBinding Content}" 
              ContentTemplate="{TemplateBinding 
               ContentTemplate}"/> 
        </Grid> 
etc..... 

在這種情況下,我使用的是畫布自定義控件,而我想指定類似Grid作爲添加到內容的控件的佈局管理器。我該怎麼做呢 ?

感謝,

斯科特

+0

你能解釋一下你的意思是「似乎繼承自定義控件的佈局管理器」?另外如果你可以發佈一些xaml,這將是有益的。 – KeithMahoney 2010-01-20 22:23:55

+0

沒有理由您的LayoutRoot不能成爲網格,除非在該自定義Xaml中有需要它的東西。即使如此,你也可以在該網格中使用Canvas。也許關於你想要做什麼的更多信息會有所幫助? – Raumornie 2010-01-21 00:40:37

+0

到目前爲止,這個問題沒有任何意義,ContentPresenter可以有哪些子控件?答案:1,該子控件可能是一個Grid,Canvas或其他任何東西,因此可能有其他控件,但它是「頂級」子控件,它將佈局指定給其他控件。 – AnthonyWJones 2010-01-21 13:30:25

回答

1

斯科特,

只要確保您的自定義控制(自定義:小工具)自ContentControl,而不是Control派生。只有ContentControl注意可視化樹中的ContentPresenters。

吉姆·麥柯迪
YinYangMoney

+0

謝謝吉姆。我從ContentControl派生,所以這不是問題。 – 2010-01-23 23:06:57

相關問題