Элементы списка, которые связаны в ControlTemplate, отображаются только один раз

У меня есть элемент управления, который оборачивает Xceed DataGridControl (часть расширенной версии WPF Toolkit Community Edition). Элемент управления предоставляет простое свойство (без свойства вспомогательной зависимости), которое может содержать список кнопок (поле создается в конструкторе):

public List<Button> GroupButtons
{
    get { return groupButtons; }
    set { groupButtons = value; }
}

Затем элементы свойства добавляются в XAML представления, использующего элемент управления:

<local:CustomControl ...>

    <local:CustomControl.GroupButtons>
        <Button>foo<Button>
    </local:CustomControl.GroupButtons>

    ...
</local:CustomControl ...>

Я хотел бы отобразить кнопки этого списка внутри так называемого "GroupHeaderControl" Xceed Datagrid, который в основном является строкой группировки, как показано ниже:

введите описание изображения здесь

Чтобы достичь этого, я переписал ControlTemplate GroupHeaderControl:

<ResourceDictionary ...>
    <Style TargetType="{x:Type controls:CustomControl}">
        <Style.Resources>
            <Style TargetType="{x:Type xcdg:GroupHeaderControl}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type xcdg:GroupHeaderControl}">
                            <Border ...>
                                <StackPanel Height="{TemplateBinding Height}" Orientation="Horizontal"> 

                                    <ContentPresenter  />                        
                                    <ItemsControl ItemsSource="{Binding GroupButtons,  RelativeSource={RelativeSource AncestorType={x:Type controls:CustomControl}}}" />

                                </StackPanel>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
    </Style>
    ...
</ResourceDictionary>

Теперь возникает проблема: вместо того, чтобы отображать кнопку (кнопки) для каждого экземпляра GroupHeaderControl, она отображается только один раз. Для иллюстрации представьте, что на изображении выше только кнопка в заголовке второй группы ("Лион") видна, а другая ("Реймс") - нет.

Проблема, по-видимому, связана с тем, что элементы списка GroupButtons добавляются через определение XAML. Если я жестко закодирую элементы списка, это работает как шарм:

public List<Button> ButtonList
{
    get { return new List<Button>()
    {
        new Button() { Content = "foo" }
    }
}

Я действительно не понимаю, откуда это поведение. У кого-нибудь есть идея?

0 ответов

Другие вопросы по тегам