c # Как я могу развернуть элемент в ListView, чтобы занять несколько строк? - PullRequest
1 голос
/ 18 ноября 2008

В настоящее время у меня есть ListView (используя подробный вид). Я хотел бы реализовать такое поведение, при котором, когда пользователь выбирает один элемент (запись журнала), запись журнала расширяется (от одной строки до нескольких строк), чтобы предоставить более подробную информацию об возникшей ошибке.

Мой вопрос таков: возможно ли это? Если да, то есть ли хороший ресурс, который я могу использовать, чтобы помочь мне?

EDIT:

Если я ИМЕЮ использовать WPF, то, я думаю, я буду использовать ElementHost с элементом управления. Тем не менее, я абсолютно не знаю, как насчет проектирования / кодирования / использования компонентов WPF. Есть предложения?

Ответы [ 4 ]

5 голосов
/ 18 ноября 2008

Редактировать: извините, это wpf

Уловка, которую я использовал для достижения того же, заключалась в создании триггера для отображения вторичной сетки, которая по умолчанию свернута.

Попробуйте это:

    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                    </Grid.RowDefinitions>

                    <Grid Grid.Row="0" Height="20" >
                        <TextBlock Text="Not Selected"></TextBlock>
                    </Grid>
                    <Grid x:Name="selectedOnlyGrid" Grid.Row="1" Visibility="Collapsed">
                        <TextBlock Text="Selected"></TextBlock>
                    </Grid>

                </Grid>

                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}, AncestorLevel=1}, Path=IsSelected}" Value="True">
                        <Setter Property="Visibility" Value="Visible" TargetName="selectedOnlyGrid" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
2 голосов
/ 18 ноября 2008

Прочитайте пост на CodeProject здесь: Расширенный список

Должен иметь всю необходимую вам информацию:)

1 голос
/ 18 ноября 2008

Одним из способов сделать это с помощью ListView будет динамическое добавление нового ListViewItem для каждой дополнительной строки, которую вы хотите, когда выбран «родитель». Точно так же вам нужно будет удалить их, когда выбор изменится на другой элемент.

Вы также, вероятно, захотите переопределить стандартное поведение вверх / вниз, чтобы пропустить дочерние элементы.

0 голосов
/ 18 ноября 2008

Не прямой ответ на ваш вопрос, но я думаю в этом случае вам лучше с сеткой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...