2

Windows 8 アプリにDownloadOperationがいくつかあります。DownloadOperation には、、および を含むプロパティがありProgressます。XAML マークアップにデータ バインドしようとしましたが、エラーが発生しました。その後、 BackgroundDownlodProgressである構造体にバインドすることは不可能であることがわかりました。私がオンラインで見つけた唯一の解決策は、構造体を変更可能にすることでした。これは私のコードではないため、私には不可能です。StatusTotalBytesToReceiveBytesReceived

DownloadOperation.Progress.Status、DownloadOperation.Progress.BytesReceived、および DownloadOperation.Progress.TotalBytesToReceive のクラス プロパティを持つ Wrapper クラスに DownloadOperation をラップしようとしました。

ただし、UI で値を更新するには、プロパティの変更をシステムに通知する必要があります。通常、これはプロパティのセッター メソッドで行われます。ただし、基になる構造体は読み取り専用であるため、セッターはありません。

システムによって定義された不変の構造体への XAML バインディングを作成するにはどうすればよいですか?

4

1 に答える 1

4

DownloadOperationには、「AttachAsync」というタイプのオブジェクトを返す「」というメソッドがありますIAsyncOperationWithProgress<DownloadOperation, DownloadOperation>。この戻り値を使用して、進行状況イベントを処理するメソッドを追加できます。このprogressメソッドが呼び出されるたびに、progressプロパティが変更されたことをUIに通知できます。次のようになります。

var operationWithProgress = download.AttachAsync();
operationWithProgress.Progress = (asyncInfo, progressInfo) => {
    //send notify property changed events
}

免責事項:私はこのソリューションを使用してプログラムを実行しようとはしませんでした。ドキュメントを検索するだけでした。この解決策に問題がある場合はコメントしてください。

于 2012-11-26T08:20:39.877 に答える