質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

Q&A

解決済

1回答

2124閲覧

【UWP】GridViewのリアルタイムでのデータの反映(データバインディング)

heroherohero

総合スコア38

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

0グッド

2クリップ

投稿2019/08/04 22:36

UWP(Prism version6.3)で、アプリの開発を行っております。
GridViewに渡しているパラメータに変更があった際に、リアルタイムに、画面上に反映させたいです。

やりたいこととしては、はじめに、対象のフォルダ内の画像をGridView(正確には、AdaptiveGridView)を使って、表示をさせておきます。
そのあと、対象のフォルダに対して、新しく画像をアップロードし、それを画面上にもリアルタイムに反映させるということをやりたいです。

一応、DelegateコマンドをViewModel側で設定し、対象のパラメータの値の更新は行ているのですが、画面上に反映されません。
※Delegateコマンド完了時に、自画面に遷移するような処理を挟めば良いと考え、実行したのですが、うまく遷移してくれませんでした。

なお、一度、他の画面に遷移し、戻ってくると期待通りに反映されております。

こちらどのように実装したらよいか、検討がつかないため、質問させていただきます。

ご回答のほど、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/04 22:41

それはデータバインディングではないのでは?
heroherohero

2019/08/05 01:55

コメント、ありがとうございます。 本件、私としては、データバインディング、正確には、双方向データバインディングかと思っていたのですが、違いますでしょうか。 ご確認のほど、お願いいたします。
gentaro

2019/08/05 03:07

コード提示したらわかると思うんですけど
heroherohero

2019/08/05 12:53

gentar様 コメントありがとうございます。せっかくコメントをいただいたところ恐縮ではございますが、本件、「ObservableCollection<T>」を用いることで解決できましたので、これにて終了とさせていただきます。 またの機会に、コメントいただけますと幸いです。 よろしくお願いいたします。
guest

回答1

0

ベストアンサー

GridViewなどのItemsSourceINotifyCollectionChanged (コレクションの変更通知方法を定めたインターフェイス)を実装したコレクションを設定することで、リスト内容の変更に応じた表示の更新に対応しています。

多くの場合、ObservableCollection<T>を使用するのがベターかと思います。

ObservableCollection<T>
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.objectmodel.observablecollection-1

UWP ListViewなどのItemsSourceに適したコレクション型
https://www.oborodukiyo.info/UWP/VS2017/UWP-AppropriateCollectionForItemsSource

ObservableCollection<T>を使わずとも、リスト内容を更新するのに合わせて、Prism.BindableBaseのRaisePropertyChanged(nameof(MyList))といった形でプロパティ変更通知を行えば表示を更新できますが、この場合ItemsSourceに新しいリストを適用するのと同じ扱いになるため、リスト全体を読み直して表示データを構築し直すことになり、場合によっては処理がとても重くなる可能性があるので注意が必要です。

投稿2019/08/05 03:55

tor4kichi

総合スコア763

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

heroherohero

2019/08/05 12:51

ご回答、ありがとうございます。 本件「ObservableCollection<T>」を使ってみたところ、自分の意図した通り、リアルタイムにデータが反映されました。意図を汲み取って、回答していただき、ありがとうございました。 今後とも、よろしくお願いいたします。
tor4kichi

2019/08/05 22:18

解決できたようでよかったです。 質問の「GridViewに渡すパラメータの変更があったら表示を更新」という部分が一番肝要なのにさらっと流して説明している印象で、少しわかりづらいと思いました。 「現在の問題と目標」が回答者にとって重要で、「試したこと」とは分けて書かれているとベターかと思います。例えば ## やりたいこと (略) ## 試したこと (略) と書くことでMarkdownの見出し表示ができますので、次回質問の際には参考にしてみてください。
heroherohero

2019/08/05 22:52

コメント、ありがとうございます。 また、質問方法へのアドバイスも、ありがとうございます。 次回から質問を行う際に、参考にさせていただきます。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問