Аккордеонный контроль показывает содержание элемента только после второго выбора - PullRequest
1 голос
/ 01 ноября 2011

У меня есть AccordionControl (WPFToolkit), к которому я динамически добавляю элементы:

        <my:Accordion Grid.Column="1" 
                      ItemsSource="{Binding Path=Tests}" 
                      SelectionMode="ZeroOrOne" 
                      HorizontalAlignment="Stretch" 
                      VerticalAlignment="Stretch">
            <my:Accordion.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Header}" />
                    </StackPanel>
                </DataTemplate>
            </my:Accordion.ItemTemplate>
            <my:Accordion.ContentTemplate>
                <DataTemplate>
                    <ContentPresenter Content="{Binding Content}"/>
                </DataTemplate>
            </my:Accordion.ContentTemplate>
        </my:Accordion>

Чтобы увидеть содержимое, я должен выбрать (открыть) элемент AccordionItem, закрыть его и открыть снова.В чем может быть причина такого поведения?

РЕДАКТИРОВАТЬ Я нашел способ обойти это использование стилей, но мне было бы интересно, почему выше не работает.Вот стилевое решение:

        <Style x:Key="itemStyle" TargetType="my:AccordionItem">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Header}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="accordionStyle" TargetType="my:Accordion">
        <Setter Property="ItemContainerStyle" Value="{StaticResource itemStyle}" />
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <ItemsControl ItemsSource="{Binding MenuItems}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding Path=Text, Mode=OneWay}"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

<my:Accordion Grid.Column="1" Height="Auto"
                         Name="accordion1" 
                         ExpandDirection="Left" 
                         SelectionMode="One"
                         ItemsSource="{Binding Tests}"
                         Style="{StaticResource accordionStyle}">
        </my:Accordion>

РЕДАКТИРОВАТЬ Теперь я обнаружил проблему: я не могу "растянуть AccordionControl.

<my:Accordion Grid.Column="1" Height="Auto"
                      VerticalAlignment="Stretch"
                      HorizontalAlignment="Stretch"
                         Name="accordion1" 
                         ExpandDirection="Left" 
                         SelectionMode="One"
                         ItemsSource="{Binding Tests}"
                         Style="{StaticResource accordionStyle}">
        </my:Accordion>

Как только я это сделаю, он больше не работаетКто-нибудь знает способ обойти это?

...