single.php

C# WinUI3で[RefreshContainer]コントロールの状態を取得する方法

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで[RefreshContainer]コントロールの状態を取得する方法です。

[RefreshContainer]コントロール

WinUI3プロジェクトで[RefreshContainer]コントロールを利用すると[引っ張って更新](PullToRefresh)が実装できます。

スマホやタブレットのアプリには、当たり前のように実装されている機能がWinUI3にも追加できます。

詳しい内容は、別記事をご覧ください。

[RefreshVisualizer]で取得

[RefreshContainer]を追加すると、タッチパッドやタッチスクリーンでスクロールすると下画像のにアイコンが表示されます。

例えば、ユーザーがコンテンツをスワイプしている状態で他コントロールを無効にしたい場合には[RefreshVisualizer]内のイベントで取得ができます。

例えば、Xamlを修正して[RefreshContainer]コントロール内の[RefreshVisualizer]を追加します。

<Grid>
  <RefreshContainer>
    <RefreshContainer.Visualizer>
      <RefreshVisualizer RefreshStateChanged="RefreshVisualizer_RefreshStateChanged">
      </RefreshVisualizer>
    </RefreshContainer.Visualizer>
    <GridView Name="Image_Grid">
      <Image Source="hogehoge.jpg" Stretch="Uniform"/>
    </GridView>
  </RefreshContainer>
</Grid>

追加した[RefreshVisualizer]の[RefreshStateChanged]イベントで状態が取得できます。

C#の場合には、次のコードで判定が可能です。

private void RefreshVisualizer_RefreshStateChanged(RefreshVisualizer sender, RefreshStateChangedEventArgs args)
{
  if (args.NewState == RefreshVisualizerState.Refreshing)
  {
    //更新中の処理
  }
}

サンプルでは更新中の[RefreshVisualizerState.Refreshing]を判定していますが、その他にもアイドル中やコンテンツを引っ張っている最中などの状態も取得が可能です。

その他の、詳しい内容はMicrosoft公式の[RefreshVisualizerState 列挙型]をご覧ください。

まとめ

今回は、短い記事ですが WinUI3プロジェクトで[RefreshContainer]コントロールの状態を取得する方法について紹介しました。

[RefreshContainer]コントロール内の[RefreshVisualizer]でユーザーがコンテンツに対して行っている操作の取得ができます。

WinUI 3 アプリで[RefreshContainer]コントロールで、コンテンツの状態やユーザーの操作を取得したい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です