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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

704閲覧

Xamarin.Formsで、入力したテキストを一覧表示する方法

kktf

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2018/04/07 10:07

前提・実現したいこと

C#、Xamarin共に初心者です。
Xamarin.Formsで簡単なメモアプリを作っています。
下の画像左にある追加ボタンで画像右へ画面遷移し、テキストを入力できるようにしました。
その状態で保存ボタンを押すと元の画面に戻り、先ほど入力したテキストを一覧に追加表示できるようにしたいです。(現在はテキストを打ち込んで「保存」を押しても、元の画面に戻るだけで何も起きません)

発生している問題

上記画像左の画面でテキスト一覧を表示するにはどうしたらよいでしょうか。
ObservableCollectionを使えば良さそうということは調べました。
あとは「保存」ボタンを押した時に入力したテキストがObservableCollectionに追加されればよいと思うのですが、中々実現できずにいます。
アドバイスをいただけますと幸いです。

該当のソースコード

画像左

using System; using Xamarin.Forms; using System.Collections.ObjectModel; namespace Memo { public partial class MemoPage : ContentPage { public ObservableCollection<Memo> memos = new ObservableCollection<Memo>(); public MemoPage() { InitializeComponent(); this.BindingContext = memos; } async void Add_clicked(object sender, EventArgs e) { await Navigation.PushAsync(new WritePage()); } } public class Memo { public string Letter { get; set; } } }

画像右

using System; using System.Collections.Generic; using Xamarin.Forms; namespace Memo { public partial class WritePage : ContentPage { public WritePage() { InitializeComponent(); } async void Save_clicked(object sender, EventArgs e) { await Navigation.PopAsync(); } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

正しく答えられているのか自信はありませんが、、、

目的としていることを達成したいのならRealmなどのデータベースを使った方がいいと思います。そうすることで、アプリを再起動したときにもメモの内容を復元できるようになります。

WritePage#Save_clickedでメモの内容をrealmに登録し
MemoPageでRealmに登録した内容を表示する、という感じです。

Reamlの使い方はここをご参照ください。

ちなみにObservableCollectionはpage間で情報共有する用途よりもpage内でアイテムに何か操作したときに応えて反応する処理をするときに使うのに向いていると思います。
例えば、Textに何か入力したときに、その入力に不正な文字が入っていないかチェックするという場合ですね。
それらのチェックの処理はCollectionChangedやPropertyChangedにわたすことになります。

CollectionChangedやPropertyChangedの使い方はこちらをご参照ください。
上のページでは_orderlist.CollectionChanged += _orderlist_CollectionChanged;とすることで
メモのリストの3つの処理
追加(e.Action == NotifyCollectionChangedAction.Add),
削除(e.Action == NotifyCollectionChangedAction.Remove),
変更(e.Action == NotifyCollectionChangedAction.Replace)が行われると、
リストのアイテムが何か操作されたとき(文字記入されるとか)に(item.PropertyChanged += MyType_PropertyChanged)とすることでイベントが発行される(//change event hook hereの部分)ようになることを示しています。

投稿2018/04/07 12:48

編集2018/04/07 12:59
shogiOtakku

総合スコア123

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

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

kktf

2018/04/08 03:01

回答いただきありがとうございます。とても参考になります! データベースが必要なのですね。 Realmなどのデータベースについて調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問