Как я могу иметь два вида прокрутки в одном пользовательском контроле? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь создать два списка элементов (продажи и резервирование) в одном пользовательском контроле.Проблема, с которой я сталкиваюсь, заключается в том, что содержимое прокрутки переполнено и не прокручивается.

Я пытался изменить стековые панели на сетку.Он работает при использовании фиксированной высоты в сетке, но я хочу, чтобы она была масштабируемой.

<Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="2*"/>
                    <RowDefinition Height="1*"/>
                </Grid.RowDefinitions>
                <ScrollViewer Grid.Row="0">
                    <StackPanel>
                        <TextBlock Grid.Row="0" Margin="0 25 0 0" Text="{x:Static properties:Resources.Sales}" FontSize="20" FontWeight="Bold"/>
                        <ListView Grid.Row="1" FontSize="18" Height ="{Binding ActualHeight, ElementName=GridListView}" x:Name="SalesList" ItemsSource="{Binding CurrentOccupancy.Sales}" SelectedItem="{Binding SelectedSale}">

                            <i:Interaction.Behaviors>
                                <behavior:EventToCommandBehavior Command="{Binding SalesViewSelectionChangedCommand}" Event="SelectionChanged" PassArguments="True" />
                            </i:Interaction.Behaviors>
                            <ListView.View>

                                <GridView>
                                    <GridViewColumn Header="{Binding Source={x:Static properties:Resources.Paid}, StringFormat=is\{0\}}">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <TextBlock x:Name="paid" Text="{Binding Paid}"/>
                                                <DataTemplate.Triggers>
                                                    <DataTrigger Binding="{Binding Paid}" Value="0">
                                                        <Setter TargetName="paid" Property="Text" Value="{x:Static properties:Resources.Unpaid}" />
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding Paid}" Value="1">
                                                        <Setter TargetName="paid" Property="Text" Value="{x:Static properties:Resources.Paid}" />
                                                    </DataTrigger>
                                                </DataTemplate.Triggers>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding Product.Name}"
                            Header="{x:Static properties:Resources.Name}" />
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding Product.Price}"
                            Header="{x:Static properties:Resources.Price}" />
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </StackPanel>
                </ScrollViewer>
                <ScrollViewer Grid.Row="1">
                    <StackPanel>
                        <TextBlock Margin="0 25 0 0" Grid.Row="2" Text="{x:Static properties:Resources.Reservations}" FontSize="20" FontWeight="Bold"/>
                        <ListView Grid.Row="3" FontSize="18" Height ="{Binding ActualHeight, ElementName=GridListView}" ItemsSource="{Binding FutureReservations}" SelectedItem="{Binding SelectedReservation}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding LastName}"
                            Header="{x:Static properties:Resources.LastName}"/>
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding AmountPeople}"
                            Header="{x:Static properties:Resources.AmountOfPeople}"/>
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding PhoneNumber}"
                            Header="{x:Static properties:Resources.Phone}"/>
                                    <GridViewColumn
                            DisplayMemberBinding="{Binding StartTime, StringFormat=HH:mm dd/MM}"
                            Header="{x:Static properties:Resources.StartTime}"/>
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </StackPanel>

                </ScrollViewer>
            </Grid>

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

Вот как должен выглядеть дизайн: Снимок экрана дизайнера

1 Ответ

0 голосов
/ 03 мая 2019

В ListView есть прокрутка.

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

Я предлагаю вам поставить сетку внутри каждого ряда сетки.

Дайте ему два ряда.

Поместите текстовый блок в первый и ваш список просмотра второй.

Вот упрощенная версия вашей разметки, которая иллюстрирует мое предложение.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <TextBlock Text="First List"/>
        <ListView ItemsSource="{Binding Letters}" Grid.Row="1"/>
    </Grid>
    <Grid Grid.Row="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <TextBlock Text="Second List"/>
        <ListView ItemsSource="{Binding Letters}" Grid.Row="1"/>
    </Grid>
</Grid>

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

Очевидно, у меня нет заголовков в этой версии.

enter image description here

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