[過去ログ]
Microsoft .NET MAUI part9 [Xamarin] (1002レス)
Microsoft .NET MAUI part9 [Xamarin] http://mevius.5ch.net/test/read.cgi/tech/1663067298/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
27: デフォルトの名無しさん [] 2022/09/19(月) 08:23:29.23 ID:Guc0YHbo ナビゲーションメニュー初めて作って見たんだけどナビゲーション先でObservableCollectionにAddしたものがメインのCollectionViewに表示されるようにするにはどうすればいいんだろうか? ナビゲーションバックでコレクションを更新すればよいのかな? http://mevius.5ch.net/test/read.cgi/tech/1663067298/27
28: デフォルトの名無しさん [sage] 2022/09/19(月) 08:42:40.58 ID:CegtP/3a >>27 逆に何で同じコレクションを使わないんだ http://mevius.5ch.net/test/read.cgi/tech/1663067298/28
29: デフォルトの名無しさん [] 2022/09/19(月) 09:59:22.76 ID:Guc0YHbo >>28 同じコレクション使ってるはずなんだけどページにそれを持ってこうとするとできないんよなぁ… どうすればいいんだろうか? 違うページでObservableCollectionが入ってるクラスをnewしたら初期化されるかなぁ? http://mevius.5ch.net/test/read.cgi/tech/1663067298/29
30: デフォルトの名無しさん [sage] 2022/09/19(月) 10:23:17.35 ID:lsi5cYj1 何を言ってるのかよくわからん 1つのObservableCollectionを2つのビューにバインドすればいいだけだろう 何をどうしたらそんなことになるんだ それが再現できる最小のコードを作ってみたら動画のネタにもなるんじゃね まさか2つのViewModelそれぞれに違うインスタンスのコレクションを追加して自動的に同期しないと悩んでるんじゃないだろうな http://mevius.5ch.net/test/read.cgi/tech/1663067298/30
31: デフォルトの名無しさん [sage] 2022/09/19(月) 10:44:45.76 ID:shikJWy/ それなんじゃね DIで別のインスタンスみてんじゃ http://mevius.5ch.net/test/read.cgi/tech/1663067298/31
32: デフォルトの名無しさん [sage] 2022/09/19(月) 11:35:41.96 ID:lsi5cYj1 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>(); こうすればそれぞれのコンストラクタにインスタンスが自動的に注入される コンストラクタの引数をインターフェースにしとけばテストの時にモックが注入できる http://mevius.5ch.net/test/read.cgi/tech/1663067298/32
33: デフォルトの名無しさん [] 2022/09/19(月) 12:15:12.04 ID:Guc0YHbo こんな感じでObservableCollectionをDataCollectionとして作って (DataSet.cs) https://imgur.com/EyItdN6.jpg Navigation先でAddしたやつを (DetailPage.xaml.cs) https://imgur.com/y6mRlTQ.jpg MainPageのCollectionView(memoList)に反映させたい (MainPage.xaml.cs) https://imgur.com/yukXPyC.jpg http://mevius.5ch.net/test/read.cgi/tech/1663067298/33
34: デフォルトの名無しさん [] 2022/09/19(月) 12:20:06.36 ID:Guc0YHbo そういえばナビゲーション先のページAddTransientにしてたわ AddSingletonにします。 http://mevius.5ch.net/test/read.cgi/tech/1663067298/34
35: デフォルトの名無しさん [] 2022/09/19(月) 12:43:46.65 ID:Guc0YHbo newじゃなくて{get}だけでいいのかな? http://mevius.5ch.net/test/read.cgi/tech/1663067298/35
36: デフォルトの名無しさん [sage] 2022/09/19(月) 12:53:29.94 ID:lsi5cYj1 AddTransientどうこうより先に2回newしてんじゃねーかw http://mevius.5ch.net/test/read.cgi/tech/1663067298/36
37: デフォルトの名無しさん [sage] 2022/09/19(月) 12:57:27.09 ID:lsi5cYj1 >>34 ページはどうせアプリ終了まで生きてるからどうだっていいぞ http://mevius.5ch.net/test/read.cgi/tech/1663067298/37
38: デフォルトの名無しさん [] 2022/09/19(月) 14:21:39.73 ID:Guc0YHbo >>36 やっぱりnewが悪いのか… newせずDataCollectionを使う方法ってありますか? http://mevius.5ch.net/test/read.cgi/tech/1663067298/38
39: デフォルトの名無しさん [sage] 2022/09/19(月) 14:26:26.45 ID:lsi5cYj1 AddSingletonしろって言ったばかりだがもしかしてインスタンスの概念がわからない系? http://mevius.5ch.net/test/read.cgi/tech/1663067298/39
40: デフォルトの名無しさん [] 2022/09/19(月) 14:53:54.45 ID:Guc0YHbo >>39 ? 最初のnewはMainPageでいいんだよね? そのナビゲーション先でDataListクラスの関数使おうとするとどう指定すればいいんだ? http://mevius.5ch.net/test/read.cgi/tech/1663067298/40
41: デフォルトの名無しさん [sage] 2022/09/19(月) 15:10:23.98 ID:oefI52tK >>40 いやだからnewしないの さっき書いたコードのModelのとこを共有したいコレクションを持ったクラスに書き換える するとサービスプロバイダーにそのクラスを要求したら最初の1回は自動的にnewされたインスタンスが返り、次からは同じインスタンスが返る つまり何回要求しても同じものが返ってくるんだよ ここではDIを使ってるからMainPageがMauiAppに作成された時点でViewModelが自動的にサービスプロバイダから注入され、ViewModelが作成された時点でModelが注入される 同じく別のページとそのVMもAddSingletonしとけばそのページに遷移した時にVMにモデルの同じインスタンスが注入される 同じインスタンスだから状態も共有する newしたら別のインスタンスになっちゃうだろ? http://mevius.5ch.net/test/read.cgi/tech/1663067298/41
42: デフォルトの名無しさん [] 2022/09/19(月) 15:37:24.08 ID:Guc0YHbo >>41 うーんわからん… Program.csに>>32を書けってこと? http://mevius.5ch.net/test/read.cgi/tech/1663067298/42
43: デフォルトの名無しさん [sage] 2022/09/19(月) 15:42:31.60 ID:oefI52tK >>42 MAUI使ってるんじゃねーの? https://www.syncfusion.com/blogs/post/learn-how-to-use-dependency-injection-in-net-maui.aspx http://mevius.5ch.net/test/read.cgi/tech/1663067298/43
44: デフォルトの名無しさん [] 2022/09/19(月) 15:54:41.38 ID:Guc0YHbo >>43 なるほど! これで共有のObservableCollectionを共有できるのか! これって.NET MAUIからの新機能? http://mevius.5ch.net/test/read.cgi/tech/1663067298/44
45: デフォルトの名無しさん [sage] 2022/09/19(月) 15:56:32.37 ID:oefI52tK 機能としては相当前からあるがここまでの圧をもって押し付けてくるのはMAUIからかな http://mevius.5ch.net/test/read.cgi/tech/1663067298/45
46: デフォルトの名無しさん [] 2022/09/19(月) 15:59:03.17 ID:Guc0YHbo >>45 ありがとう! http://mevius.5ch.net/test/read.cgi/tech/1663067298/46
47: デフォルトの名無しさん [sage] 2022/09/19(月) 19:25:59.58 ID:UixL+xz1 >>39 みたいだね。 インスタンスがいまいちわかっていないみたい。 http://mevius.5ch.net/test/read.cgi/tech/1663067298/47
48: デフォルトの名無しさん [sage] 2022/09/20(火) 18:48:08.27 ID:tcmFdYIT MAUI、CollectionViewがバグりすぎててガチで使えないwwwwwwww ItemTemplate を設定してあるとき、バインド元のコレクションの要素の置き換えをやると画面上では要素が置き換わったように見えるが、置き換え前のビューもなぜかメモリ上に残ったままになるwwwwwwwう◯こwwwwwww http://mevius.5ch.net/test/read.cgi/tech/1663067298/48
49: デフォルトの名無しさん [] 2022/09/20(火) 18:52:37.03 ID:uMWd7f8R >>48 メモリ管理ができてないってこと? http://mevius.5ch.net/test/read.cgi/tech/1663067298/49
50: デフォルトの名無しさん [] 2022/09/20(火) 19:41:41.12 ID:+1ymuJNf >>48 こいつが使い方間違えてるのに50ペリカ http://mevius.5ch.net/test/read.cgi/tech/1663067298/50
51: デフォルトの名無しさん [sage] 2022/09/20(火) 19:43:54.08 ID:Pye1gVbz まさか上の続きなのか? http://mevius.5ch.net/test/read.cgi/tech/1663067298/51
52: デフォルトの名無しさん [] 2022/09/20(火) 19:51:35.86 ID:uMWd7f8R 俺は.NET MAUIのこと悪く言わんよ EditorコントロールがAndroidでは外側のグリッド(フレーム、スタックレイアウト含む)のWidthを参照しないって仕様は見つけたけど ホリゾンタルオプションズをフィルにしても一文字分のWidthにしかならんやつ もちろんちゃんとWidthリクエストすれば問題ない http://mevius.5ch.net/test/read.cgi/tech/1663067298/52
53: デフォルトの名無しさん [sage] 2022/09/20(火) 20:34:41.76 ID:+UHOIJTp まあ現象再現する最小コードでも上げてもらわないと何とも言えんわな http://mevius.5ch.net/test/read.cgi/tech/1663067298/53
54: デフォルトの名無しさん [sage] 2022/09/20(火) 20:47:07.60 ID:4OsfujaD >>48 それはパフォーマンスを優先するために画面の再描画をしてないだけ RxのThrottle使え http://mevius.5ch.net/test/read.cgi/tech/1663067298/54
55: デフォルトの名無しさん [sage] 2022/09/20(火) 23:22:31.32 ID:nDZPLz9M debounceとかthrottleとかそういうのを知らずにゴリゴリ押して苦しんでる人結構多いよね。 webはおもちゃ、ゲームも所詮おもちゃ、とか言って叩いて無視しすぎたんじゃないかなって思うわ。 http://mevius.5ch.net/test/read.cgi/tech/1663067298/55
56: デフォルトの名無しさん [sage] 2022/09/20(火) 23:29:09.65 ID:tcmFdYIT プロジェクト作って、 MainPage.xaml <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="<http://schemas.microsoft.com/dotnet/2021/maui>" xmlns:x="<http://schemas.microsoft.com/winfx/2009/xaml>" xmlns:local="clr-namespace:CollectionViewMemoryLeak" x:Class="[プロジェクト名].MainPage" x:DataType="local:MainPage"> <Grid RowDefinitions="Auto,*"> <Button Text="Replace" Clicked="Button_Clicked"/> <CollectionView Grid.Row="1" ItemsSource="{Binding Items}"> <CollectionView.ItemTemplate> <DataTemplate> <Label Text="{Binding}"/> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> </Grid> </ContentPage> MainPage.xaml.cs using System.Collections.ObjectModel; namespace [プロジェクト名]; public partial class MainPage : ContentPage { public ObservableCollection<string> Items { get; } = new() { "a" }; public MainPage() { InitializeComponent(); BindingContext = this; } private void Button_Clicked(object sender, EventArgs e) { Items[0] += "b"; } } って置き換えて、デバッグ開始 ボタン1万回ぐらい押すとわかると思うよ http://mevius.5ch.net/test/read.cgi/tech/1663067298/56
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 946 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s