Есть решения этой проблемы для старых основанных на XAML интерфейсах пользовательского интерфейса (WPF/SL), но они нелегко адаптируются к универсальной платформе Windows.Создайте ListBox с элементами, которые расширяются при выборе (Accordion)
Я пытаюсь создать список элементов, которые показывают только ограниченные детали в состоянии по умолчанию и расширяют, когда он выбран, для быстрого редактирования некоторых данных.
Я не нашел способ создать такое расширяющееся поведение, хотя оно похоже на то, что делает приложение Windows 10 Mail, с разговорами. Когда выбрано сообщение о разговоре, другие сообщения этого типа разворачиваются или спускаются вниз.
Ниже приведен пример списка, в котором я хотел бы сначала отобразить только имя.
<ListBox ItemsSource="{x:Bind Persons}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate x:DataType="src:Person">
<StackPanel HorizontalAlignment="Stretch" Width="Auto">
<TextBlock Text="{x:Bind Path=Name, Mode=OneWay}" Margin="12, 15, 12, 0" FontSize="18.667" />
<TextBox HorizontalAlignment="Stretch" Margin="12, 12, 12, 0" FontSize="18.667" Text="{x:Bind Path=Name, Mode=TwoWay}" />
<TextBlock Text="Date of birth" Margin="12, 15, 12, 0" />
<DatePicker Margin="12, 5, 12, 0" Date="{x:Bind Path=DateOfBirth, Mode=TwoWay}" />
<TextBlock Text="Domicile" Margin="12, 15, 12, 0" />
<TextBox Margin="12, 5, 12, 0" Text="{x:Bind Path=Domicile, Mode=OneWay}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В WPF, такое поведение может быть достигнуто с триггерами Style.Triggers
, но они больше не доступны.
Первоисточник код на GitHub
У вас все еще есть триггеры, доступные вам в UWP, и есть несколько способов сделать это в чистом XAML, одним быстрым и простым способом, который я мог бы придумать. Создайте ItemTemplate со стилизованным ToggleButton и панелью под ним. Затем привяжите видимость панели к состоянию IsChecked ToggleButton и добавьте конвертер Bool to Visibility, voila, сделанный. –