2016-10-31 17 views
1

私のアプリケーションは、インターネットサービスを使用してデータを取得して保存します。接続せずにこれらを使用しようとすると、エラーが発生する可能性があります。私はまた、接続性がないことをユーザーに示すために必要です。UWPアプリケーションでインターネットの可用性を処理するにはどうすればよいですか?

これをどのように効果的に行うことができますか?

PS:私はTemplate 10フレームワークを使用します。

+0

なぜdownvoteですか? –

答えて

2

これを実用的に処理するには、まずテンプレート10 1.1.12以降を使用するようにアップグレードする必要があります。このバージョンでは、NetworkAvailableServiceを使用して、インターネット接続だけでなく、一般的なネットワークもテストできます。アプリケーションがローカルリソースにアクセスする内部アプリかインターネットリソースにアクセスする外部アプリかによって異なります。

public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state) 
{ 
    var net = new NetworkAvailableService(); 
    net.AvailabilityChanged = async e => 
    { 
     if (await net.IsNetworkAvailable()) 
     { 
      // yes network 

      if (await net.IsInternetAvailable()) 
      { 
       // yes internet 
      } 
      else 
      { 
       // no internet 
      } 
     } 
     else 
     { 
      // no network 
     } 
    }; 
} 

質問のUI部分の処理は別の問題です。ビューモデルにIsConnected INPCプロパティを設定すると、UI要素の可視性が変更されます。または、あなたの視覚状態を変えるのに素晴らしいNetworkConnectionStateTriggerを使うことができます。それは私がそれをやる方法です。確かに、それは教科書のアプローチです。

は運のベストhttps://github.com/dotMorten/WindowsStateTriggers

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup> 
     <VisualState x:Name="connected"> 
      <VisualState.StateTriggers> 
       <triggers:NetworkConnectionStateTrigger ConnectionState = "Connected" /> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="MyTextBlock.Text" Value="Internet is available" /> 
      </VisualState.Setters> 
     </VisualState> 
     <VisualState x:Name="disconnected"> 
      <VisualState.StateTriggers> 
       <triggers:NetworkConnectionStateTrigger ConnectionState = "Disconnected" /> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="MyTextBlock.Text" Value="No internet connection"/> 
      </VisualState.Setters> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

から状態トリガーをゲット!

関連する問題