Свойство фона не работает в моем пользовательском элементе управления, полученном из 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>

Базовый элемент управления для моего пользовательского элемента управления

Parent-ItemsControl MainChild-ItemsControl InnerChild-ContentControl

В моем примере я попытался установить фон следующим образом:

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

Для обоих элементов, производных от ItemsControl, свойство background не работает.

Любые предложения приветствуются.


person Muthalagu    schedule 18.06.2013    source источник
comment
Background вашего InnerChild не устанавливается?   -  person WPF-it    schedule 18.06.2013
comment
Нет, для моего внутреннего дочернего элемента свойство Background работает.   -  person Muthalagu    schedule 19.06.2013
comment
Как выглядит ваш родительский класс?   -  person Terry    schedule 19.06.2013


Ответы (1)


Я пытался сделать то же самое, и я не вижу проблемы, почему это не сработает. Итак, ожидая, как будут выглядеть ваши классы Parent и MainChild, вот несколько вещей, которые вы можете сделать:

  1. Поместите поля для ваших элементов управления в xaml. Ваш внутренний дочерний элемент может занимать все пространство, поэтому вы на самом деле не можете видеть фоновые цвета ваших элементов управления (см. Ниже nr1).
  2. Назовите свой элемент управления и попробуйте получить фон в коде (см. ниже № 2).

Итак, попробуйте №1:

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

Или попробуйте №2:

Dim brush As SolidColorBrush = CType(icParent.Background, SolidColorBrush)
person Terry    schedule 19.06.2013
comment
@Muthalagu: добавьте код для родителя вашего класса и / или объясните немного яснее, что вы имеете в виду, когда свойство background не работает. - person Terry; 24.06.2013
comment
Джерри: пожалуйста, просто создайте простой настраиваемый элемент управления, подобный моему (например, приведенные выше коды, которые я разместил) и проверьте это. Тогда вы обязательно столкнетесь с этой проблемой. Можешь ли ты? - person Muthalagu; 25.06.2013
comment
Я не смогу больше помочь, если вы не покажете мне, как выглядят ваши управляющие классы (родительский, основной дочерний и внутренний дочерний). - person Terry; 25.06.2013
comment
Классы управления Djerry выглядят как ? значит чего ты от меня ждешь? - person Muthalagu; 25.06.2013
comment
Вы должны были создать 3 класса с именами Parent, MainChild и InnerChild, из которых первые 2 наследуют от itemscontrol. Вы делаете ссылку на него, используя ключевое слово local, определенное в верхней части вашего xaml. Мне нужно посмотреть, как выглядят эти классы. - person Terry; 25.06.2013