[過去ログ] Microsoft .NET MAUI part9 [Xamarin] (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
27(1): デフォルトの名無しさん [] 2022/09/19(月) 08:23:29.23 ID:Guc0YHbo(1/10) AAS
ナビゲーションメニュー初めて作って見たんだけどナビゲーション先でObservableCollectionにAddしたものがメインのCollectionViewに表示されるようにするにはどうすればいいんだろうか?
ナビゲーションバックでコレクションを更新すればよいのかな?
29: デフォルトの名無しさん [] 2022/09/19(月) 09:59:22.76 ID:Guc0YHbo(2/10) AAS
>>28同じコレクション使ってるはずなんだけどページにそれを持ってこうとするとできないんよなぁ…
どうすればいいんだろうか?
違うページでObservableCollectionが入ってるクラスをnewしたら初期化されるかなぁ?
33: デフォルトの名無しさん [] 2022/09/19(月) 12:15:12.04 ID:Guc0YHbo(3/10) AAS
こんな感じでObservableCollectionをDataCollectionとして作って
(DataSet.cs)
画像リンク
Navigation先でAddしたやつを
(DetailPage.xaml.cs)
画像リンク
MainPageのCollectionView(memoList)に反映させたい
(MainPage.xaml.cs)
画像リンク
34(1): デフォルトの名無しさん [] 2022/09/19(月) 12:20:06.36 ID:Guc0YHbo(4/10) AAS
そういえばナビゲーション先のページAddTransientにしてたわ
AddSingletonにします。
35: デフォルトの名無しさん [] 2022/09/19(月) 12:43:46.65 ID:Guc0YHbo(5/10) AAS
newじゃなくて{get}だけでいいのかな?
38: デフォルトの名無しさん [] 2022/09/19(月) 14:21:39.73 ID:Guc0YHbo(6/10) AAS
>>36やっぱりnewが悪いのか…
newせずDataCollectionを使う方法ってありますか?
40(1): デフォルトの名無しさん [] 2022/09/19(月) 14:53:54.45 ID:Guc0YHbo(7/10) AAS
>>39?
最初のnewはMainPageでいいんだよね?
そのナビゲーション先でDataListクラスの関数使おうとするとどう指定すればいいんだ?
42(1): デフォルトの名無しさん [] 2022/09/19(月) 15:37:24.08 ID:Guc0YHbo(8/10) AAS
>>4141(1): デフォルトの名無しさん [sage] 2022/09/19(月) 15:10:23.98 ID:oefI52tK(1/3) AAS
>>40
いやだからnewしないの
さっき書いたコードのModelのとこを共有したいコレクションを持ったクラスに書き換える
するとサービスプロバイダーにそのクラスを要求したら最初の1回は自動的にnewされたインスタンスが返り、次からは同じインスタンスが返る
つまり何回要求しても同じものが返ってくるんだよ
ここではDIを使ってるからMainPageがMauiAppに作成された時点でViewModelが自動的にサービスプロバイダから注入され、ViewModelが作成された時点でModelが注入される
同じく別のページとそのVMもAddSingletonしとけばそのページに遷移した時にVMにモデルの同じインスタンスが注入される
同じインスタンスだから状態も共有する
newしたら別のインスタンスになっちゃうだろ?
うーんわからん…
Program.csに>>3232(1): デフォルトの名無しさん [sage] 2022/09/19(月) 11:35:41.96 ID:lsi5cYj1(2/5) AAS
DIならAddTransientだと別々のインスタンスになるからAddSingletonしとけ
public class Model
{
public Collection{get;}=new ObservableCollection<string>();
}
public class ViewModel
{
public ViewModel(Model model)
{
Model=model;
}
public Model Model{get;}
}
public MainPage(ViewModel viewModel)
{
ViewModel=viewModel;
}
public Model ViewModel{get;}
}
こんな風に作ったら
builder.Services.AddSingleton<Model>().AddSingleton<ViewModel>().AddSingleton<MainPage>();
こうすればそれぞれのコンストラクタにインスタンスが自動的に注入される
コンストラクタの引数をインターフェースにしとけばテストの時にモックが注入できる
を書けってこと?
44: デフォルトの名無しさん [] 2022/09/19(月) 15:54:41.38 ID:Guc0YHbo(9/10) AAS
>>43なるほど!
これで共有のObservableCollectionを共有できるのか!
これって.NET MAUIからの新機能?
46: デフォルトの名無しさん [] 2022/09/19(月) 15:59:03.17 ID:Guc0YHbo(10/10) AAS
>>45ありがとう!
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.075s