C# Windows应用商店应用-在下载类中使用进度条

C# Windows应用商店应用-在下载类中使用进度条,c#,xaml,download,C#,Xaml,Download,我的主页上有一个ProgressBar.xaml: <ProgressBar HorizontalAlignment="Center" Height="90" Margin="0,-30,0,0" VerticalAlignment="Center" Width="600" x:Name="BarProgress" /> 而且效果很好!我可以看到ProgressBar继续进行

我的主页上有一个ProgressBar.xaml:

<ProgressBar HorizontalAlignment="Center"
                 Height="90" Margin="0,-30,0,0" 
                 VerticalAlignment="Center" 
                 Width="600" x:Name="BarProgress" /> 
而且效果很好!我可以看到ProgressBar继续进行,直到下载结束

但是,如果我想创建一个新类,比如DownloadData.xaml.cs,然后将用于下载数据的所有代码放入其中,那么如何调用BarProgress.Value?!?
我做了很多尝试,比如MainPage.BarProgress.Value=percent,但是我收到了很多错误,因为BarProgress是不可执行的

我可能会将Progressbar移到DownloadData.xaml用户控件上。这样,每次下载数据时,它都有自己的progressbar,可以从后面的代码中访问。如果您真的不想这样做,另一种方法可能是搜索控件并尝试以这种方式抓取它。以下是一些有用的提示:编辑:为用户控件在项目中创建子文件夹右键单击项目并添加用户控件。这将添加一个xaml页面和一个xaml.cs代码隐藏页面。接下来,您要添加所解释的控件。应该可以了。

因为它有一个保护级别错误,您能分享更多下载的数据类代码吗?更具体地说,类和方法签名?我在最后理解时对这个问题做了一点修改!它们是线程相关错误还是保护级别错误?如果它们是保护级别,您可能希望将progressbar移到downloaddata.xaml。很抱歉,我没有下载数据。xaml…我有一个简单的类,负责下载DownloadData.cs!下载data.xaml是个好主意…我怎样才能将它嵌套到MainPage.xaml中?谢谢你的帮助!这似乎是迄今为止最好的方法!我能够使用ProgressBar创建UserControl,并在我的主XAML中导入,但是如果我把BarProgress.Value=2放在UserControl的构造函数中,效果会很好,但是如果我在下载过程中更新这个值,ProgressBar.Value不会刷新…这是一个问题,因为我们采用了这个解决方案作为解决方法!!!!!提前谢谢你!目前任务没有更新UI线程,我们必须对此做出解释。您可以搜索该问题(有很多解决方案),或者向我展示DownloadData.xaml和xaml.cs的代码,我们将看看是否可以更新您的代码。我所做的只是将问题中的代码从MainPage.xaml.cs下载数据到DownloadControl.xaml.cs。然后在LoadState的主页中,我调用下载的入口点:DownloadControl dwCont=new DownloaControl();dwCont=.downloadDocumentData(rootObj);在XAML中,我有相同的问题进度条…这似乎是一件容易的事情,但实际上并非如此!!!!!您应该能够按照以下步骤操作,并在结束时拥有一个很棒的进度条:
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;                        
        }