2013-06-18 64 views
0

我正在創建一個從ItemsControl派生的自定義控件,現在我正面臨一個問題。當我嘗試在樣本中設置我的控件背景時,它不起作用。下面是控件的代碼:背景屬性不工作在我的自定義控件派生自ItemsControl

<!--Parent--> 
<Style TargetType="{x:Type local:Parent}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:Parent}"> 
       <Border Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
        <ScrollViewer> 
         <ItemsPresenter/> 
        </ScrollViewer> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<!--MainChild--> 

<Style TargetType="{x:Type local:MainChild}"> 
    <Setter Property="Height" Value="430"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:MainChild}"> 
       <Border Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
        <ItemsPresenter /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<!--InnerChild--> 
<Style TargetType="{x:Type local:InnerChild}"> 
    <Setter Property="Width" Value="100"/> 
    <Setter Property="Height" Value="100"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:InnerChild}"> 
       -------------------------------------- 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

基站控制到我的自定義控件

家長的ItemsControl MainChild-ItemsControl的 InnerChild-ContentControl中

在我的示例,我試圖設置背景如下:

<local:Parent Background="Yellow" > 
     <local:MainChild Background="Green"> 
      <local:InnerChild Content="Item1" Background="#FF008C00"/> 
     </local:MainChild> 
</local:Parent> 

對於從ItemsControl派生的元素,backgr ound屬性不起作用。

歡迎任何建議。

+0

是'你的'InnerChild'沒有得到設定的Background'? –

+0

不,我內心的孩子背景屬性正在工作。 – Muthalagu

+0

你的父母班怎麼樣? – Terry

回答

0

我試過做同樣的事情,我沒有看到問題爲什麼不起作用。因此,請等待您的Parent和MainChild類的外觀如下,您可以執行以下幾項操作:

  1. 在xaml的控件中放入邊距。你的小孩可能佔據了所有的空間,所以你實際上看不到你itemcontrols的背景顏色(見下面的nr1)。
  2. 爲您的控件命名並嘗試獲取代碼中的背景(請參見下面的nr2)。

所以儘量NR1:

<local:Parent Background="Yellow" > 
    <local:MainChild Margin="20" Background="Green"> 
     <local:InnerChild Content="Item1" Background="#FF008C00"/> 
    </local:MainChild> 
</local:Parent> 

或者試試NR 2:

Dim brush As SolidColorBrush = CType(icParent.Background, SolidColorBrush) 
+0

Djerry - 我嘗試過,但沒有成功。 – Muthalagu

+0

@Muthalagu:爲你的班級「家長」添加代碼和/或更清楚地說明你的意思是「背景屬性不起作用」。 – Terry

+0

Djerry-請只是像我的一樣創建簡單的自定義控件(如上發佈的代碼),並檢查這一點。那麼你一定會面對這個問題。你可以嗎? – Muthalagu