teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2016/09/19 14:42

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  private TaskListView(List<TaskData> taskDataList)
24
24
  {
25
- ItemsSource = taskDataList.Result;
25
+ ItemsSource = taskDataList;
26
26
  var cell = new DataTemplate(typeof(TextCell));
27
27
  cell.SetBinding(TextCell.TextProperty, "Title");
28
28
  ItemTemplate = cell;

1

追記

2016/09/19 14:42

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,3 +1,31 @@
1
- C#に詳しいわけではないですが調べてみると「やっぱりそうか」と思える手法は見つかりましたstaticなファクトリメソッドからprivateなコンストラクタを叩くようにすると良さそうです
1
+ C#に詳しいわけではないですが調べてみると「やっぱりそうか」と思える手法は見つかりましたstaticなファクトリメソッドからprivateなコンストラクタを叩くようにすると良さそうです
2
2
 
3
- [c# - Can constructors be async? - Stack Overflow](http://stackoverflow.com/a/12520574/1846562)
3
+ [c# - Can constructors be async? - Stack Overflow](http://stackoverflow.com/a/12520574/1846562)
4
+
5
+ ### 追記
6
+
7
+ JavaScriptのノリで適当に書いてみました,あやふやな知識で書いた上にデバッグも全くしてないので,おかしいところがあれば指摘お願いします.
8
+
9
+ ```C#
10
+ public class TaskListView : ListView
11
+ {
12
+ public static async Task<TaskListView> BuildTaskListViewAsync()
13
+ {
14
+ var rootFolder = FileSystem.Current.LocalStorage;
15
+ var files = await rootFolder.GetFilesAsync();
16
+ var taskDataList = await Task.WhenAll(files.Select(async file => {
17
+ var title = await file.ReadAllTextAsync();
18
+ return new TaskData { Title = title };
19
+ }));
20
+ return new TaskListView(taskDataList);
21
+ }
22
+
23
+ private TaskListView(List<TaskData> taskDataList)
24
+ {
25
+ ItemsSource = taskDataList.Result;
26
+ var cell = new DataTemplate(typeof(TextCell));
27
+ cell.SetBinding(TextCell.TextProperty, "Title");
28
+ ItemTemplate = cell;
29
+ }
30
+ }
31
+ ```