回答編集履歴
2
修正
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
private TaskListView(List<TaskData> taskDataList)
|
24
24
|
{
|
25
|
-
ItemsSource = taskDataList
|
25
|
+
ItemsSource = taskDataList;
|
26
26
|
var cell = new DataTemplate(typeof(TextCell));
|
27
27
|
cell.SetBinding(TextCell.TextProperty, "Title");
|
28
28
|
ItemTemplate = cell;
|
1
追記
answer
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
-
C#に詳しいわけではないですが
|
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
|
+
```
|