Реализация выпадающего списка XAML WPF

229
11 июня 2018, 00:50

Подскажите? с помощью каких инструментов WPF(XAML) можно реализовать вот такой выпадающий список, по нажатию на "+" выпадать должен список с детальной информацией сдвигая нижний элемент, а по нажатию на другой элемент старый сдвигать, а новый выдвигать. Пробовал с помощью ComboBox не то, подобного не нашел

Answer 1

Вот такой стиль ListBox-а у меня завалялся, очень похоже на то, что вам нужно. Конечно же всё то, что не касается сути вопроса я убрал, но схематически вы поймёте, а визуальную част поменяете как вам надо.

<Style x:Key="expandable_listbox" TargetType="{x:Type ListBox}">
    <Style.Setters>
        <Setter Property="Background"               Value="Wheat"/>
        <Setter Property="OverridesDefaultStyle"    Value="True"/>
        <Setter Property="SnapsToDevicePixels"      Value="True"/>
        <Setter Property="UseLayoutRounding"        Value="True"/>
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Style.Setters>
                        <Setter Property="Background"               Value="Coral"/>
                        <Setter Property="Height"                   Value="32"/>
                        <Setter Property="Margin"                   Value="1"/>
                        <Setter Property="OverridesDefaultStyle"    Value="True"/>
                        <Setter Property="SnapsToDevicePixels"      Value="True"/>
                        <Setter Property="UseLayoutRounding"        Value="True"/>
                        <Setter Property="ContentTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="32"/>
                                            <RowDefinition/>
                                        </Grid.RowDefinitions>
                                        <Grid>
                                            <!-- ТУТ ОСНОВНОЙ КОНТЕНТ -->
                                        </Grid>
                                        <Grid Grid.Row="1">
                                            <!-- ТУТ ДОПОЛНИТЕЛЬНЫЙ КОНТЕНТ -->
                                        </Grid>
                                    </Grid>
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                    <Grid>
                                        <Border x:Name      ="Container"
                                                Background  ="{TemplateBinding Background}">
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition/>
                                                    <ColumnDefinition Width="Auto"/>
                                                </Grid.ColumnDefinitions>
                                                <ContentPresenter HorizontalAlignment="Left"
                                                                  Margin="10 0 0 0"
                                                                  VerticalAlignment="Center"/>
                                                <ToggleButton x:Name="ItemExapnder"
                                                              Grid.Column="1"
                                                              Height="32"
                                                              Width="32"/>
                                            </Grid>
                                        </Border>
                                    </Grid>
                                    <ControlTemplate.Triggers>
                                        <Trigger SourceName="ItemExapnder" Property="IsChecked" Value="True">
                                            <Setter Property="Height" Value="132"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style.Setters>
                </Style>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListBox}">
                    <ScrollViewer Background    ="{TemplateBinding Background}"
                                  Focusable     ="False">
                        <StackPanel IsItemsHost="True"/>
                    </ScrollViewer>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style.Setters>
</Style>
READ ALSO
DataTable количество одинаковых записей

DataTable количество одинаковых записей

Товарищи, есть DataTable в нем есть столбец Article

276
Как загрузить UserControl в Grid или StackPanel?

Как загрузить UserControl в Grid или StackPanel?

Создал UserControl и пытаюсь загрузить его на главное окноВ главном окне есть StackPanel и Grid, но куда бы я не пытался добавить UC - одна и та же ошибка...

201