我正在创建一个从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派生的两个元素,后台属性不起作用。
欢迎任何建议。
答案 0 :(得分:0)
我尝试过这样做,但我没有看到为什么它不起作用的问题。所以等着看你的Parent和MainChild类是什么样的,这里有一些你可以做的事情:
所以试试nr1:
<local:Parent Background="Yellow" >
<local:MainChild Margin="20" Background="Green">
<local:InnerChild Content="Item1" Background="#FF008C00"/>
</local:MainChild>
</local:Parent>
或尝试nr2:
Dim brush As SolidColorBrush = CType(icParent.Background, SolidColorBrush)