0

Итак, я решил перейти с Windows Phone 8.0 на Windows Phone 8.1 API, а не на Silverlight. Причина в том, что я хотел использовать библиотеку рисования Win2D, которая не поддерживается для Silverlight 8.1 или WP 8.0Что случилось с Windows Phone 8.1 Pivot? (WinRT - не Silverlight)

Странные вещи происходят. Простой вид Pivot невероятно лагги, а также не отображает изображения должным образом. Я использую последнюю версию Visual Studio 2015 На видео я связан вы можете увидеть результат следующих страниц XAML коду (только для тестирования):

<Page 
x:Class="Apptest2.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Apptest2" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <StackPanel Grid.Column="0"> 
     <Button Content="Go" 
       /> 
    </StackPanel> 
    <Pivot Grid.Row="1" 
      x:Name="PivotView" 
      Margin="10,0,10,15" 
      CacheMode="BitmapCache" 
      VerticalContentAlignment="Stretch"> 
     <PivotItem Header="item1"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 
     <PivotItem Header="item2"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 
     <PivotItem Header="item3"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 
     <PivotItem Header="item4"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 
     <PivotItem Header="item5"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 
     <PivotItem Header="item6"> 
      <Grid Background="BlueViolet" /> 
     </PivotItem> 


    </Pivot> 
</Grid> 
</Page> 

ли кто-нибудь может сказать, что здесь происходит? Должен ли я использовать некоторые сводные аналоги от сторонних сторон или, может быть, просто забыть об использовании его в новых ОС? Вытягивая мои волосы. Любое решение было бы чрезвычайно оценено!

Link to video

ответ

2

Проблема заключается в использовании CacheMode="BitmapCache" на вашем Pivot. Удалите эту строку, и производительность должна быть хорошей после.

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

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

Reference другой StackOverflow ответ. Я надеюсь, что это помогает.

+0

Большое вам спасибо. Я все еще изучаю основы wp и WinRT. Однако интересно, что тот же код на wp 8.0 заставляет его работать без каких-либо проблем –

Смежные вопросы