后台属性在我的自定义控件中不起作用派生自ItemsControl

时间:2013-06-18 11:56:36

标签: c# wpf silverlight wpf-controls

我正在创建一个从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派生的两个元素,后台属性不起作用。

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

我尝试过这样做,但我没有看到为什么它不起作用的问题。所以等着看你的Parent和MainChild类是什么样的,这里有一些你可以做的事情:

  1. 在xaml中为您的控件添加边距。你的内心孩子可能会占用所有的空间,所以你实际上看不到你的itemcontrols的背景颜色(见下面的nr1)。
  2. 命名您的控件并尝试在代码中获取背景(请参阅下面的nr2)。
  3. 所以试试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)