2

メトロ アプリに MVVM パターンを使用しています。私のメイン ページで、ユーザーがボタンを押すと、アプリはユーザーの現在の場所を取得します。

ユーザーの位置を取得するプロセスは非同期であり、UI を変更したいので、ボタンが無効になり、座標が返されるまで不確定な進行状況バーが表示されます。

MVVMに従ってこれを管理する最良の方法は何ですか? カスタムの表示状態をお持ちですか? ApplicationViewStates と CommonStates があることに気付きました。独自のカスタムのものを追加することは可能ですか? これをどのように行いますか?

4

2 に答える 2

1

次のようなものを探していると思います:

ビューモデル:

private async void CommandExecution()
{
    IsAwaitingResponse=true;
    var response = await _myService.DoNetworkCall()
    IsAwaitingResponse=false;
}

Microsoft テンプレートのいずれかを使用している場合は、BooleanToVisibilityConverter を「Common」フォルダーに配置する必要があります。次のように使用します。

<Page.Resources>
    <BooleanToVisibilityConverter x:key="booleanToVisibilityConverter"/>
</Page.Resources>
"..."
<ProgressBar Visibility={Binding IsAwaitingResponse,Converter={StaticResource booleanToVisibilityConverter}}" IsIndeterminate="true"/>
于 2012-09-13T15:22:56.217 に答える
0

私の xaml の経験は WPF と Silverlight ですが、この提案が Metro アプリでうまくいくことを願っています。ボタンの IsEnabled プロパティとプログレス バーの可視性プロパティをビュー モデルのブール値プロパティ (おそらく IsCurrentLocationComplete と呼ぶ) にバインドできます。非同期メソッドが完了し、ビューが更新されるときに、このプロパティの値を変更します。ボタンのプロパティを設定するのは簡単ですが、プログレス バーの可視性のために値コンバーター (IValueConverter) が必要です。

于 2012-09-07T18:01:42.500 に答える