2017-09-23 75 views
1

語境如何在Exrin中實現視覺忙碌/工作指示器?

我發現一步一步Exrin基礎設施。我研究了許多準備使用infra元素來在後臺執行命令執行。在那些我看到的IsBusyDelay,VisualState.IsBusy,超時消息等我也知道Exrin不依賴於Xamarin.Forms,所以我想,Exrin不應該提供真正的視覺實現,那最後一步仍然留在我身上。 (這很酷,讓我決定UI體驗)

在我的ViewModel中,我設置了IsBusyDelay = 1000;。後臺任務由Execution.ViewModelExecute(... my task here ..., currently 5000msec delay)

問題

現在我想我必須從某個地方執行的處理程序(S)或重寫(S)將被自動調用,並執行一些視覺UX展示,並開始隱藏繁忙/進行中的UX反饋。我只是不知道在哪裏以及如何......

回答

1

這是你在視圖中實現的東西。例如,如果你想要一個覆蓋整個屏幕的東西,加載指示器,你可以將它添加到你的用戶界面。

<Grid HorizontalOptions="FillAndExpand" 
     IsVisible="{Binding VisualState.IsBusy}" 
     BackgroundColor="#E6272C30" 
     VerticalOptions="FillAndExpand"> 
    <Grid HorizontalOptions="Center" VerticalOptions="CenterAndExpand" 
      Height="200"> 
     <ActivityIndicator Grid.Row="0"      
         IsRunning="{Binding VisualState.IsBusy}" 
         IsVisible="{Binding VisualState.IsBusy}"> 
      <ActivityIndicator.Scale> 
       <OnPlatform x:TypeArguments="x:Double" Android="1" iOS="1.3" /> 
      </ActivityIndicator.Scale> 
     </ActivityIndicator> 
    </Grid> 
</Grid> 

您可以在頁面底部,現有網格內添加此項。

然後當IsBusy被觸發時,它將其顯示爲覆蓋圖,並帶有活動指示符。

當然,這只是一個方法。您可以在旁邊的一個活動指示器,或剛剛單擊的按鈕內,或類似的內容。這一切都取決於你的UI設計。

+0

亞當,非常感謝您的詳細解答。我沒有期望寫出實現,而不是我自己:-)。鏈中唯一缺失的環節是我沒有意識到的是我應該將(任何)綁定到.IsBusy。 –

+0

是的,Exrin採取了不與任何特定庫集成的方法,因此它無法爲您實現UI元素。它有它的缺點,你必須自己實現這些東西,但是你可以實現任何你想要的優點,沒有任何限制。 –

+1

我的意思是:我沒有想到_you_會在答案中寫下實現而不是我:-)。只是沒有發現綁定到IsBusy的想法,這太容易了...... –