2015-08-07 4 views
1

Я новичок в разработке телефонов Windows. Я хочу попытаться реализовать pull down, чтобы обновить страницу. Я использую listbox под scrollviewer. У меня возникла проблема, когда я использую приложение silverlight для Windows Phone 8.1. Вот мой кодсвернуть, чтобы обновить список в телефоне Windows 8.1 Silverlight

MainPage.xaml

<phone:PhoneApplicationPage 
    x:Class="PullDownToScroll.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True"> 

    <!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid> 


      <ScrollViewer Name="OuterScroll" Loaded="OuterScroll_Loaded" LayoutUpdated="OuterScroll_ViewChanged"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="60"/> 
        <RowDefinition/> 
       </Grid.RowDefinitions> 

       <Grid Background="GreenYellow"> 
        <Image Source="Assets/down13.png" Height="40" Width="40" HorizontalAlignment="Left" Margin="20,0,0,0"> 
         <Image.RenderTransform> 
          <RotateTransform x:Name="RefreshIndicatiorRotateTransform" CenterX="20" CenterY="20"/> 
         </Image.RenderTransform> 
        </Image> 
        <TextBlock Name="RefreshIndicatiorTextBlock" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="80,0,0,0" Width="200" Foreground="Black"/> 
       </Grid> 

       <ListBox Name="InnerListView" Grid.Row="1"> 

       </ListBox> 
      </Grid> 
     </ScrollViewer> 

    </Grid>  
    </Grid> 

</phone:PhoneApplicationPage> 

MainPage.xaml.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Navigation; 
using Microsoft.Phone.Controls; 
using Microsoft.Phone.Shell; 
using PullDownToScroll.Resources; 
using System.Windows.Media; 

namespace PullDownToScroll 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     // Constructor 
     public MainPage() 
     { 
      InitializeComponent(); 
      this.InitializeComponent(); 
      InnerListView.Height = ApplicationView.GetForCurrentView().VisibleBounds.Height; 
      GenerateRandomListViewItem(); 
      this.NavigationCacheMode = NavigationCacheMode.Required; 

      // Sample code to localize the ApplicationBar 
      //BuildLocalizedApplicationBar(); 
     } 

     public void GenerateRandomListViewItem() 
     { 
      InnerListView.Items.Clear(); 
      Random rand = new Random(); 
      for (int i = 0; i < 20; i++) 
      { 
       ListBox item = new ListBox(); 
       item.Background = new SolidColorBrush(Color.FromArgb(255, (byte)rand.Next(0, 255), (byte)rand.Next(0, 255), (byte)rand.Next(0, 255))); 
       item.Height = rand.NextDouble() * 150; 
       item.Margin = new Thickness(0, 8, 0, 8); 
       InnerListView.Items.Add(item); 
      } 
     } 

     private void OuterScroll_Loaded(object sender, RoutedEventArgs e) 
     { 
      OuterScroll.ChangeView(null, 60, null, false); 
     } 

     private void OuterScroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
     { 
      if (!e.IsIntermediate) 
      { 
       if (OuterScroll.VerticalOffset < 60) 
       { 
        if (OuterScroll.VerticalOffset <= 0.5) 
         OuterScroll.ChangeView(null, 60, null, false); 
        else 
         OuterScroll.ChangeView(null, 60, null); 
       } 
       if (OuterScroll.VerticalOffset <= 0.5) 
       { 
        GenerateRandomListViewItem(); 
       } 
      } 
      else 
      { 
       double angle = (65 - OuterScroll.VerticalOffset) * 180/65; 
       RefreshIndicatiorRotateTransform.Angle = angle; 
      } 

      if (OuterScroll.VerticalOffset == 0) 
       RefreshIndicatiorTextBlock.Text = "Release to refresh"; 
      else 
       RefreshIndicatiorTextBlock.Text = "Pull to refresh"; 
     } 
    } 
} 

В MainPage.xaml.cs я нашел ошибку Ошибка 1 Тип или пространство имен имя " ScrollViewerViewChangedEventArgs 'не удалось найти (вам не хватает директивы using или ссылки на сборку?) Как решить эту проблему? пожалуйста, поделитесь этим предложением. Спасибо заранее.

+0

Microsoft промаха, чтобы поместить эту функцию в Windows Phone 8.0/Windows Phone 8.1 Silverlight рамки ... Вы должны управлять это ваш собственный путь (на заказ). Pull to refresh - поддержка только в Windows Phone 8.1 WIN RT App. –

+0

Да, я знаю, Microsoft пропустила его. мой код отлично работает на Win RT, но я хочу сделать это в приложении Silverlight. он не работает над Silverlight. Я меняю свой код на silverlight, но он не работает. –

+0

Лучший способ использования панели приложений ... Для этой функции я проверяю потерянное приложение из «магазина телефонов Windows», например. gmail, cricbuzz', все они используют кнопку обновления в панели приложений ... Я также потерял время, чтобы найти решение, но до даты я этого не нашел ... Поэтому я советую вам использовать этот значок обновления панели приложений –

ответ

0

Лучший способ обновления вида/использования экрана. Панель приложений. Поместите значок обновления на панель приложений и нажмите значок обновления, чтобы обновить ваш просмотр/экран.

Эта ссылка поможет полный для того, как использовать Appication bar

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