0

RSSフィードからデータをロードする必要があるMVVMパターンでアプリケーションを作成しています。時間がかかるので、プログレスバーを使って読み込みプロセスを表示したいと思います。ビューモデルでMVVMパターンを使用して、非同期およびIsBusyステータスでこれを実現するにはどうすればよいですか?誰かが持っている場合はコードを提供してください。プログレスバーのUIコードは次のとおりです。

<ProgressBar IsIndeterminate={Binding IsBusy} />

そのためのViewModelのコードはどうあるべきですか?

4

2 に答える 2

1

Visibility属性もバインドする必要があります。また、Visibility列挙値が必要なため、BooleanToVisibilityConverterコンバーターを使用する必要があります。

<Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
</Resources>

<ProgressBar IsIndeterminate={Binding IsBusy}
             Visibility="{Binding IsBusy, Converter={StaticResource BooleanToVisibility}}" />
于 2013-03-03T16:34:41.500 に答える
0

ViewModelの場合、NotifyPropertyChangedイベントをトリガーするIsBusyプロパティが必要です。

public class MyViewModel : INotifyPropertyChanged
{
    private bool _isBusy;

    public bool IsBusy
    {
        get { return _isBusy; }
        set
        {
            _isBusy = value;
            this.RaisePropertyChanged("IsBusy");
        }
    }

    private void BeginWorking()
    {
        this.IsBusy = true;
        //Do the work...
    }
    private void FinishWorking()
    {
        this.IsBusy = false;
    }

    //Other implementation, including INotifyPropertyChanged...
}

実装に慣れていない場合はINotifyPropertyChanged、それを支援するためのリソースがたくさんあります。

前の回答の1つが示唆しているように、を使用して値から値BooleanToVisibilityConverterに変換し、を表示/非表示にする必要があります。boolVisibilityProgressBar

また、バックグラウンドスレッドからRSSフィードを取得する作業を行わない限り、UIへの変更は反映されません。そうしないと、UIスレッドがブロックされ、UIが更新されません。

于 2013-03-03T16:58:10.633 に答える