【发布时间】:2017-11-16 12:27:13
【问题描述】:
我正在尝试使用选择器来填充数据。在这方面似乎没有一个直接的答案。我已经尝试了很多东西,其中一件事是:
Xaml:
<Picker Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="4"
Title="Driver Name"
ItemsSource="{Binding Drivers}"
SelectedItem="{Binding driverID}"
在视图模型中:
List<string> Drivers = new List<string> { "Steve","Dave" };
这很好用,但它只是一个虚拟功能,因为将来这些名称将从某种服务中获取。 因此,为了复制它,我尝试将此列表分离到一个模拟服务中,然后将列表返回到视图模型并使其以这种方式工作。
但这仍然没有返回到前端,即使我在调试时可以看到列表不是空白的。 然后我尝试创建一个 Driver 类并返回其中包含该名称的类的实例并在 Xaml 中访问它。 这不起作用,我什至尝试了使用 IList 的变体,这也不起作用。
我不确定为什么这不起作用,因为该列表只是被分成了本质上不同的类。例如,这就是我现在正在尝试的:
Xaml:
<Picker Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="4"
Title="Driver Name"
ItemsSource="{Binding Drivers}"
SelectedItem="{Binding driverID}"
/>
查看模型:
这是绑定到选择器的
public List<string> Drivers;
然后从构造函数中调用这个方法:
public async Task FindDriverNames()
{
Drivers = await GetDriverNames();
}
在模型中:
public async Task<List<string>> GetDriverNames()
{
await Sleep();
List<string> _drivers = new List<string> { "Steve"};
return _drivers;
}
这不起作用,但是当通过调试运行时,它显示驱动程序已填充。 我浪费了很多时间试图完成这项工作,有人有见解吗?
【问题讨论】:
-
使用 ObservableCollection
代替 List 。 -
我会试试这个
-
你应该做 Drivers.AddRange(...) 而不是 assignment...
-
@RomanAnanyev: 如果您要更新,请致电
Clear:-)