回答編集履歴
1
まるごと変更通知
answer
CHANGED
@@ -104,4 +104,64 @@
|
|
104
104
|
|
105
105
|
public record Commonクイズ(int 問題ID, string 問題文, string 選択肢1, string 選択肢2, string 選択肢3, string 選択肢4, string 解説, string 答え);
|
106
106
|
```
|
107
|
-

|
107
|
+

|
108
|
+
|
109
|
+
|
110
|
+
---
|
111
|
+
|
112
|
+
`Common`クラスは引数のコレクションに詰めるより、コレクションを返す実装のほうがクリーンかもしれません。
|
113
|
+
|
114
|
+
リアルタイムで問題の追加削除があるなら`ObservableCollection`がいいですが、問題の中身の編集もあるなら`Commonクイズ`に`INotifyPropertyChanged`実装が必要になってきます。
|
115
|
+
(そういうもろもろが面倒なので)単なる`List`にして何か変更(追加削除編集)がある度に、まるごと変更通知のほうが楽かもしれないですね^^
|
116
|
+
|
117
|
+
```cs
|
118
|
+
namespace Ql63fphcbc3gg5l;
|
119
|
+
|
120
|
+
public partial class MainPage : ContentPage
|
121
|
+
{
|
122
|
+
public List<Commonクイズ> QuizItems { get; set; } = Common.歴史();
|
123
|
+
|
124
|
+
public MainPage()
|
125
|
+
{
|
126
|
+
InitializeComponent();
|
127
|
+
BindingContext = this;
|
128
|
+
}
|
129
|
+
|
130
|
+
private void OnButton_科学(object? sender, EventArgs e)
|
131
|
+
{
|
132
|
+
QuizItems = Common.科学();
|
133
|
+
OnPropertyChanged(nameof(QuizItems));
|
134
|
+
}
|
135
|
+
|
136
|
+
private void OnButton_編集(object? sender, EventArgs e)
|
137
|
+
{
|
138
|
+
QuizItems[0].問題文 = "aaa";
|
139
|
+
QuizItems = new(QuizItems); // 無駄だがListまるごと作り直し^^;
|
140
|
+
OnPropertyChanged(nameof(QuizItems));
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
public static class Common
|
145
|
+
{
|
146
|
+
private static readonly List<Commonクイズ> クイズ = [];
|
147
|
+
|
148
|
+
static Common() => データベースの読み込み_全部();
|
149
|
+
|
150
|
+
private static void データベースの読み込み_全部()
|
151
|
+
{
|
152
|
+
クイズ.Add(new(1, "歴史", "日本の最初の首都はどこ?", "京都", "奈良", "東京", "大阪", "710年から784年まで日本の都であった都市です。", "奈良"));
|
153
|
+
クイズ.Add(new(2, "科学", "地球上で最も豊富な元素は?", "酸素", "窒素", "水素", "鉄", "地殻の約46.6%を占めています。", "酸素"));
|
154
|
+
}
|
155
|
+
|
156
|
+
public static List<Commonクイズ> 歴史() => クイズ.Where(x => x.ジャンル == "歴史").ToList();
|
157
|
+
public static List<Commonクイズ> 科学() => クイズ.Where(x => x.ジャンル == "科学").ToList();
|
158
|
+
}
|
159
|
+
|
160
|
+
public record Commonクイズ(int 問題ID, string ジャンル, string 問題文, string 選択肢1, string 選択肢2, string 選択肢3, string 選択肢4, string 解説, string 答え)
|
161
|
+
{
|
162
|
+
public string 問題文 { get; set; } = 問題文;
|
163
|
+
}
|
164
|
+
```
|
165
|
+
|
166
|
+
問題や選択肢がランダムな順になるとより良いですね^^
|
167
|
+
[[C#] [MAUI] MAUIの情報(日本語)が少なくて困っています。[受付終了]](https://teratail.com/questions/q4dt5xzsk6ir41#reply-dv88olatbzmjmn)
|