2016-05-04 2 views
0

У меня возникла странная проблема. У меня есть Pivot в моем Xaml так:UWP PivotItem ListView TabChange issue

<Page.Resources> 
    <ResourceDictionary> 
     <SolidColorBrush x:Key="NavButtonPressedBackgroundBrush" Color="White" Opacity="0.3" /> 
     <SolidColorBrush x:Key="NavButtonCheckedBackgroundBrush" Color="White" Opacity="0.2" /> 
     <SolidColorBrush x:Key="NavButtonHoverBackgroundBrush" Color="White" Opacity="0.1" /> 

     <Style x:Key="NavRadioButtonStyle" TargetType="RadioButton"> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="Padding" Value="3"/> 
      <Setter Property="HorizontalAlignment" Value="Stretch"/> 
      <Setter Property="VerticalAlignment" Value="Center"/> 
      <Setter Property="HorizontalContentAlignment" Value="Left"/> 
      <Setter Property="VerticalContentAlignment" Value="Center"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="RadioButton"> 
         <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="PointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BackgroundGrid"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource NavButtonHoverBackgroundBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Pressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BackgroundGrid"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource NavButtonPressedBackgroundBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Disabled" /> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="CheckStates"> 
            <VisualState x:Name="Checked"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BackgroundGrid"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource NavButtonCheckedBackgroundBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Unchecked"/> 
            <VisualState x:Name="Indeterminate"/> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="FocusStates"> 
            <VisualState x:Name="Focused"/> 
            <VisualState x:Name="Unfocused"/> 
            <VisualState x:Name="PointerFocused"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Grid Name="BackgroundGrid" Background="Transparent" VerticalAlignment="Stretch"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="48"/> 
            <ColumnDefinition Width="*"/> 
           </Grid.ColumnDefinitions> 
           <TextBlock FontSize="34" Height="38" Text="{TemplateBinding Tag}" FontFamily="Segoe MDL2 Assets" Margin="5,8,5,5" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
           <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" Grid.Column="1" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" TextWrapping="Wrap" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
          </Grid> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ResourceDictionary> 
</Page.Resources> 


<SplitView x:Name="MySplitView" DisplayMode="CompactOverlay" IsPaneOpen="False" 
      CompactPaneLength="48" OpenPaneLength="240" PaneBackground="DarkGray"> 
    <SplitView.Pane> 
     <StackPanel x:Name="SplitViewPanel"> 

      <RadioButton x:Name="HamburgerRadioButton" Click="HamburgerRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" 
         Background="Gray" GroupName="Hamburger" Tag="" /> 

      <RadioButton x:Name="HomeRadioButton" Click="HomeRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" 
         Background="Gray" Content="Home" GroupName="Navigation" Tag=""/> 

      <RadioButton x:Name="SettingRadioButton" Click="SettingRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" 
         Background="Gray" Content="Settings" GroupName="Navigation" Tag=""/> 

     </StackPanel> 
    </SplitView.Pane> 
    <SplitView.Content> 
     <SplitView Background="Azure" IsPaneOpen="True" OpenPaneLength="400" DisplayMode="Inline"> 
      <!--To Show Listing--> 
      <SplitView.Pane> 
       <Frame Name="FrameListing"> 
        <RelativePanel> 
         <!--List Pane Header--> 

          <TextBlock Text="MY RISKS" Name="ListHeaderPanelTitle" RelativePanel.AlignLeftWithPanel="True" Padding="10"/> 
          <Button Name="ListHeaderAdd" FontFamily="Segoe MDL2 Assets" Content="" 
            RelativePanel.AlignRightWithPanel="True" Background="Transparent" Padding="10"/> 
          <Button Name="ListHeaderFilter" FontFamily="Segoe MDL2 Assets" Content="" 
            RelativePanel.LeftOf="ListHeaderAdd" Background="Transparent" Padding="10"/> 

         <!--Tabs Layout--> 
         <Pivot x:Name="rootPivot" RelativePanel.Below="ListHeaderPanelTitle"> 
          <PivotItem Header="Assigned"> 
           <ListView ItemsSource="{x:Bind Risks}" IsItemClickEnabled="True" 
              ItemClick="ListView_ItemClick" x:Name="AssignedRisksList"> 
           <ListView.ItemTemplate> 
            <DataTemplate x:DataType="data:Risk"> 
             <StackPanel Orientation="Vertical"> 
              <TextBlock FontSize="10" Text="{x:Bind Status}"/> 
              <TextBlock FontSize="16" Text="{x:Bind Description}"/> 
              <TextBlock FontSize="14" Text="{x:Bind AssignedTo}"/> 
             </StackPanel> 
            </DataTemplate> 
           </ListView.ItemTemplate> 
           </ListView> 
           <!--<TextBlock Text="Assigned Listing will go here."/>--> 
          </PivotItem> 
          <PivotItem Header="Logged"> 
           <TextBlock Text="Logged Listing will go here."/> 
          </PivotItem> 
          <PivotItem Header="All" > 
           <TextBlock Text="All Listing will go here."/> 
          </PivotItem> 
         </Pivot> 

        </RelativePanel> 
       </Frame> 
      </SplitView.Pane> 
      <!--To SHow Detail--> 
      <SplitView.Content> 
       <Frame Name="FrameRiskDetail"> 

       </Frame> 
      </SplitView.Content> 
     </SplitView> 
    </SplitView.Content> 
</SplitView> 

Проблема заключается в том, что при запуске приложения, она показывает мне Assigned шарнирный элемент или вкладку, выбранные и показывает список (ListView). Однако, как только я пытаюсь изменить tab/PivotItem, ничего не происходит. Вкладки не меняются. И когда я снова нажимаю на Заданная вкладка, список исчезает.

Теперь, когда я установил SelectedIndex="1" и запустить приложение, оно показывает Записан лапку, как выбрать и любой другой вкладке отлично работает и не показывает неправильное поведение даже список не исчезает на Assigned вкладке.

<Pivot x:Name="rootPivot" RelativePanel.Below="ListHeaderPanelTitle" SelectedIndex="1"> 

Я хочу показать Assigned вкладки, по умолчанию выбраны вкладки. Даже установка SelectedIndex="0" не решает проблему.

Что я делаю неправильно?

ПРИМЕЧАНИЕ: Если требуется дополнительная информация, я поделюсь ею.

Благодаря

+0

Я проверил часть предоставленного вами кода, похоже, работает в соответствии с вашим ожиданием. Может быть, ваш стержень охватывает всю страницу, поэтому попробуйте провести с одной стороны на другую сторону. Дайте мне знать, если проблема все еще существует. –

+0

Swiping не работает вообще. См. Обновленный код xaml. –

+0

Это проблема ширины поворота. Ширина поворота может быть установлена ​​равной бесконечности (значение по умолчанию), поэтому событие завершения жестов не было правильно зафиксировано. Если вы установите ширину определенного определенного значения внутри панели splitview, она будет работать. Чтобы сделать ваш код более совершенным и динамичным, сделайте привязку ширины относительно/элемента привязанной к ширине открытой панели splitview. См. Комментарий к моему решению. Я обновил опорную часть. –

ответ

1

Возможная проблема связана с шириной Pivot, как я упоминал ранее. Попробуйте определить некоторую ширину стержня. Я обозначил вашу ось поворота как открытую панель с разделом. Теперь он работает нормально. Просто имейте в виду, что салфетки будут захватываться только на любом визуальном элементе. Таким образом, если вы попытаетесь пронести по экрану очень мало, это не сработает. Чтобы он работал, вы должны снова определить контейнер. Я использовал ваш код и изменил его в сводной секции. Ниже приведена часть кода.

      <!--Tabs Layout--> 
         <Pivot x:Name="rootPivot" RelativePanel.Below="ListHeaderPanelTitle" Width="400"> 
          <PivotItem Header="Assigned"> 
           <ListView ItemsSource="{x:Bind Risks}" IsItemClickEnabled="True" 
             ItemClick="ListView_ItemClick" x:Name="AssignedRisksList"> 
            <ListView.ItemTemplate> 
             <DataTemplate x:DataType="local:Risk"> 
              <StackPanel Orientation="Vertical"> 
               <TextBlock FontSize="10" Text="{x:Bind Status}"/> 
               <TextBlock FontSize="16" Text="{x:Bind Description}"/> 
               <TextBlock FontSize="14" Text="{x:Bind AssignedTo}"/> 
              </StackPanel> 
             </DataTemplate> 
            </ListView.ItemTemplate> 
           </ListView> 
           <!--<TextBlock Text="Assigned Listing will go here."/>--> 
          </PivotItem> 
          <PivotItem Header="Logged"> 
           <TextBlock Text="Logged Listing will go here."/> 
          </PivotItem> 
          <PivotItem Header="All"> 
           <TextBlock Text="All Listing will go here."/> 
          </PivotItem> 
         </Pivot> 
+0

Да, это была проблема с шириной. Я указал 'Width =" 400 "' и все работало как шарм. Спасибо Киран Пол. Еще одна вещь. Как я могу указать, что ширина равна ширине контейнера своего родителя? –