2013-09-23 25 views
0

我有一個進度條在我的MainPage.xaml中:的Windows Store應用 - 使用進度條在下載類

<ProgressBar HorizontalAlignment="Center" 
       Height="90" Margin="0,-30,0,0" 
       VerticalAlignment="Center" 
       Width="600" x:Name="BarProgress" /> 

然後在MainPage.xaml.cs中有下載數據的代碼:

public async Task Download(string fileName, string fileId) 
private async Task HandleDownloadAsync(DownloadOperation download, bool start) 
private async Task DiscoverActiveDownloadsAsync() 
private void DownloadProgress(DownloadOperation download) 
     {    
      double percent = 100; 
      if (download.Progress.TotalBytesToReceive > 0) 
      { 
       percent = download.Progress.BytesReceived * 100/download.Progress.TotalBytesToReceive; 
      } 

      BarProgress.Value = percent;       
     } 

它的效果很好!我可以看到ProgressBar的進展,直到下載結束!

但是,如果我想創建一個新的類,如DownloadData.xaml.cs,然後把所有代碼下載數據,我怎麼能調用BarProgress.Value?!? 我做了很多嘗試,例如MainPage.BarProgress.Value =百分比,但我收到很多錯誤,因爲BarProgress是不可訪問的...

+0

由於它有一個保護級別的錯誤,你可以分享更多的DownloadData類代碼嗎?更具體的類和方法簽名? – Danexxtone

+0

我用最後的理解修改了一下這個問題! – CaptainAmerica

+0

它們是線程相關的錯誤還是保護級別錯誤?如果它們是保護級別,則可能需要將進度條移至downloaddata.xaml。我只是在這裏大聲思考。 – Danexxtone

回答

0

我可能會將進度條移動到DownloadData.xaml用戶控件。這樣,每次下載數據時,都會有自己的進度條,可以從後面的代碼中訪問。如果你真的不想這樣做,另一種方式可能是搜索控件並嘗試以這種方式抓住它。一些有用的技巧在這裏:Find controls編輯:爲您的項目創建子文件夾UserControls右鍵單擊您的項目並添加用戶控件。這將在頁面後面添加一個xaml頁面和一個xaml.cs代碼。接下來,您想添加控制here。這應該做到這一點。

+0

好主意有一個DownloadData.xaml ...我怎麼能嵌套到MainPage.xaml? – CaptainAmerica

+0

感謝您的幫助Danexxtone!它似乎是迄今爲止最好的方法!我能夠創建帶有ProgressBar的UserControl並導入到我的Main XAML中,但是如果我將BarProgress.Value = 2放入構造函數中UserControl它工作的很好,但如果我會更新下載過程中的值ProgressBar.Value不刷新...這是一個問題,因爲我們採用了這種解決方案作爲解決方法!!!!!先謝謝了! – CaptainAmerica

+0

目前該任務沒有更新UI線程,我們必須對此進行說明。你可以搜索這個問題(這裏有很多解決方案)或者向我展示DownloadData.xaml和xaml.cs的代碼,我們將看看我們是否可以更新你的代碼。 – Danexxtone