UWP Splitview не реагирует при горизонтальной прокрутке - PullRequest
1 голос
/ 26 апреля 2019

У меня есть разделенное представление (UWP) внутри прокрутки с включенной горизонтальной прокруткой. Код, показанный ниже, имеет встроенный пользовательский элемент управления, отображающий данные в горизонтальном порядке. У меня есть меню заголовка, которое при нажатии должно открыть разделенное представление справа налево. Но всякий раз, когда есть горизонтальная прокрутка, открытое разделенное представление не реагирует. Когда я изменяю размер окна с открытым разделением и включенной горизонтальной прокруткой, я вижу, что приложение не отвечает. Что я должен сделать, чтобы получить ответ разделенного представления.

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

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

Вещи опробованы: - a) Попытка отключить горизонтальную прокрутку, когда открывается разделенный вид, но это не помогает.

Есть мысли, ребята?

<ScrollViewer VerticalScrollBarVisibility="Auto" 
                  HorizontalScrollBarVisibility="Auto" Height="Auto" 
                  x:Name="ContentView">
        <Grid Name="ProjectKanbanGrid">
            <kanban:KanbanControl x:Name="KanbanCtrl"/>
<SplitView Name="SplitViewPane" 
               IsPaneOpen="false"
               DisplayMode="Overlay"
               OpenPaneLength="500" HorizontalAlignment="Right"
               FlowDirection="RightToLeft" PaneBackground="White"
               BorderBrush="Red" BorderThickness="10"
               PaneClosing="SplitViewPane_PaneClosing">               
        <SplitView.Pane>
            <Border BorderThickness="1" CornerRadius="4" BorderBrush="LightGray">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="50"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <StackPanel Background="#FAFAFB"  Height="50" BorderBrush="#f0f0f0" 
                                    CornerRadius="4" BorderThickness="1">
                        <TextBlock Text="Edit a Task List" FontWeight="Bold" 
                                       HorizontalAlignment="Right" Margin="0,10,20,0"/>
                    </StackPanel>
                    <Grid Grid.Row="1">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="60"/>
                            <RowDefinition Height="50"/>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="50"/>
                            <RowDefinition Height="60"/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="Task List" Foreground="Red" 
                                       HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,20,0"/>
                        <TextBox  Name="TaskListName"  HorizontalAlignment="Right" 
                                     Margin="0,0,20,0" Grid.Row="1" VerticalAlignment="Top" BorderThickness="1" 
                                     BorderBrush="LightGray" Width="250"/>
                        <TextBlock Text="Related Milestone" Grid.Row="2"
                                       HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,20,0"/>
                        <ComboBox Name="MilestoneList" Width="250" IsTextSearchEnabled="True" BorderThickness="1" 
                                      BorderBrush="LightGray" Grid.Row="3" Margin="0,0,20,0"  
                                      HorizontalAlignment="Right" VerticalAlignment="Center" >
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
                        <StackPanel Orientation="Horizontal" Grid.Row="4" 
                                        HorizontalAlignment="Right" Margin="0,0,20,0" VerticalAlignment="Center">
                            <Button Background="White" Margin="20,0,0,0" Content="Cancel" Click="Cancel_Click"/>
                            <Button Background="#1e5598" Foreground="White" Content="Update" Margin="5,0,0,0"/>
                        </StackPanel>
                    </Grid>
                </Grid>
            </Border>
        </SplitView.Pane>
    </SplitView>
            <RelativePanel Visibility="{x:Bind kanban.IsShowResultGrid,Mode=TwoWay}"
                   HorizontalAlignment="Center">
                <ProgressRing x:Name="LoadProgressRing"
                              Width="25"
                              Height="25"
                              RelativePanel.AlignVerticalCenterWithPanel="True"
                              Visibility="{x:Bind kanban.IsShowProgressRing,Mode=TwoWay}"
                              IsActive="True" />
                <TextBlock x:Name="LoadingMessage" Margin="10,0,0,0" HorizontalAlignment="Center"
                            Text="Fetching your project layouts"
                            RelativePanel.AlignVerticalCenterWithPanel="True"
                            RelativePanel.RightOf="LoadProgressRing"                   
                            Visibility="{x:Bind kanban.IsShowProgressRing,Mode=TwoWay}"/>
                <TextBlock x:Name="DisplayMsg" Margin="0,0,0,0" 
                            RelativePanel.AlignHorizontalCenterWithPanel="True"
                            RelativePanel.AlignVerticalCenterWithPanel="True"
                            Text="{x:Bind kanban.DisplayMessage,Mode=TwoWay}"/>
            </RelativePanel>
        </Grid>
    </ScrollViewer>

1 Ответ

0 голосов
/ 29 апреля 2019

Удалите внешний просмотрщик прокрутки из splitview и оберните его внутри пользовательского элемента управления Элемент управления Kanban . Это сделает приложение отзывчивым.

Фрагмент кода выглядит следующим образом

    <Grid Name="ProjectKanbanGrid">
            <kanban:KanbanControl x:Name="KanbanCtrl"/>
<SplitView Name="SplitViewPane" 
               IsPaneOpen="false"
               DisplayMode="Overlay"
               OpenPaneLength="500" HorizontalAlignment="Right"
               FlowDirection="RightToLeft" PaneBackground="White"
               BorderBrush="Red" BorderThickness="10"
               PaneClosing="SplitViewPane_PaneClosing">               
        <SplitView.Pane>
            <Border BorderThickness="1" CornerRadius="4" BorderBrush="LightGray">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="50"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <StackPanel Background="#FAFAFB"  Height="50" BorderBrush="#f0f0f0" 
                                    CornerRadius="4" BorderThickness="1">
                        <TextBlock Text="Edit a Task List" FontWeight="Bold" 
                                       HorizontalAlignment="Right" Margin="0,10,20,0"/>
                    </StackPanel>
                    <Grid Grid.Row="1">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="60"/>
                            <RowDefinition Height="50"/>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="50"/>
                            <RowDefinition Height="60"/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="Task List" Foreground="Red" 
                                       HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,20,0"/>
                        <TextBox  Name="TaskListName"  HorizontalAlignment="Right" 
                                     Margin="0,0,20,0" Grid.Row="1" VerticalAlignment="Top" BorderThickness="1" 
                                     BorderBrush="LightGray" Width="250"/>
                        <TextBlock Text="Related Milestone" Grid.Row="2"
                                       HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,20,0"/>
                        <ComboBox Name="MilestoneList" Width="250" IsTextSearchEnabled="True" BorderThickness="1" 
                                      BorderBrush="LightGray" Grid.Row="3" Margin="0,0,20,0"  
                                      HorizontalAlignment="Right" VerticalAlignment="Center" >
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
                        <StackPanel Orientation="Horizontal" Grid.Row="4" 
                                        HorizontalAlignment="Right" Margin="0,0,20,0" VerticalAlignment="Center">
                            <Button Background="White" Margin="20,0,0,0" Content="Cancel" Click="Cancel_Click"/>
                            <Button Background="#1e5598" Foreground="White" Content="Update" Margin="5,0,0,0"/>
                        </StackPanel>
                    </Grid>
                </Grid>
            </Border>
        </SplitView.Pane>
    </SplitView>
            <RelativePanel Visibility="{x:Bind kanban.IsShowResultGrid,Mode=TwoWay}"
                   HorizontalAlignment="Center">
                <ProgressRing x:Name="LoadProgressRing"
                              Width="25"
                              Height="25"
                              RelativePanel.AlignVerticalCenterWithPanel="True"
                              Visibility="{x:Bind kanban.IsShowProgressRing,Mode=TwoWay}"
                              IsActive="True" />
                <TextBlock x:Name="LoadingMessage" Margin="10,0,0,0" HorizontalAlignment="Center"
                            Text="Fetching your project layouts"
                            RelativePanel.AlignVerticalCenterWithPanel="True"
                            RelativePanel.RightOf="LoadProgressRing"                   
                            Visibility="{x:Bind kanban.IsShowProgressRing,Mode=TwoWay}"/>
                <TextBlock x:Name="DisplayMsg" Margin="0,0,0,0" 
                            RelativePanel.AlignHorizontalCenterWithPanel="True"
                            RelativePanel.AlignVerticalCenterWithPanel="True"
                            Text="{x:Bind kanban.DisplayMessage,Mode=TwoWay}"/>
            </RelativePanel>
        </Grid>

KanbanControl.xaml
<Grid Margin="0,20,0,0" >
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <ScrollViewer VerticalScrollBarVisibility="Auto" 
                      HorizontalScrollBarVisibility="Auto" Height="Auto" 
                      x:Name="ContentView">
            // Horizontally stacked listview goes here.
        </ScrollViewer>
    </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...