2013-09-11 4 views
0

Поскольку в Silverlight для Windows Phone нет Border.Effect, мне удалось восстановить аналогичный эффект. Что было после редактирования турникета элемента управления Pivot это:WP7 Custom Pivot control мерцает

enter image description here

Как вы можете видеть, что проект является одним из шаблонов Visual Studio по умолчанию. С моим пользовательским стилем, ItemsPanel находится за этим черным/серым градиентом, поэтому, когда вы просматриваете список, это похоже на то, что элементы исчезают.

<Style x:Key="PivotStyle1" TargetType="controls:Pivot"> 
      <Setter Property="Margin" Value="0"/> 
      <Setter Property="Padding" Value="0"/> 
      <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="ItemTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ItemsPanelTemplate> 
          <Grid /> 
         </ItemsPanelTemplate> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="controls:Pivot"> 
         <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="70" /> 
           <RowDefinition Height="Auto" /> 
          </Grid.RowDefinitions> 
          <Grid Background="{TemplateBinding Background}" CacheMode="BitmapCache" Grid.RowSpan="3"/> 

          <Grid Grid.Row="1"> 
           <ItemsPresenter x:Name="PivotItemPresenter" Margin="{TemplateBinding Padding}" VerticalAlignment="Top"/> 

           <Grid Height="50" VerticalAlignment="Top"> 
            <Grid.Background> 
             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
              <GradientStop Color="#66000000" Offset="0"/> 
              <GradientStop Offset="1"/> 
              <GradientStop Color="#19000000" Offset="0.523"/> 
             </LinearGradientBrush> 
            </Grid.Background> 
           </Grid> 
          </Grid> 



          <Grid Height="70" Grid.Row="0" VerticalAlignment="Top"> 
           <Grid.Background> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FF1665CD" Offset="1"/> 
             <GradientStop Color="#FF5395EC"/> 
            </LinearGradientBrush> 
           </Grid.Background> 
           <Primitives:PivotHeadersControl x:Name="HeadersListElement"/> 
          </Grid> 

         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Проблема заключается в том, что всякий раз, когда я скользить в сторону PivotItems две сетки с градиентом фона мерцания. В чем может быть проблема?

UPDATE: Мерцание появляется только тогда, когда я перейти на эту страницу

ответ

1

Решенная установка CacheModeGrid элементов.

<Grid Height="70" CacheMode="BitmapCache" Grid.Row="0" VerticalAlignment="Top"> 
           <Grid.Background> 
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
             <GradientStop Color="#FF1665CD" Offset="1"/> 
             <GradientStop Color="#FF5395EC"/> 
            </LinearGradientBrush> 
           </Grid.Background> 
           <Primitives:PivotHeadersControl x:Name="HeadersListElement"/> 
          </Grid> 
0

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

+0

Ваше решение не будет «лучшим», а также не соответствует моим потребностям. Фон Infact-страницы находится за содержимым PivotItem, и это не то, что я хочу. – fillobotto