我正在通过httpClient将一些值加载到列表中。现在,我想将此列表绑定到选择器。但是选择器是空的。
我有一个“交易”类,其中包含不同的项目,例如标题。
ViewModel(FirmsViewModel)具有以下代码:
public async Task GetTradesData()
{
var tradeList = await App.RestService.GetTradesAsync(true);
Trades = new ObservableCollection<Trade>(tradeList);
}
“交易”列表已填写。到此为止,它似乎一直有效。
在我的Page.cs文件中,我有以下代码:
public FirmsPage()
{
InitializeComponent();
viewModel = new FirmsViewModel();
BindingContext = viewModel;
}
protected async override void OnAppearing()
{
base.OnAppearing();
await viewModel.GetTradesData();
}
选择器的XAML:
<Picker SelectedIndex="{Binding TradesSelectedIndex, Mode=TwoWay}"
ItemsSource="{Binding Trades}"
ItemDisplayBinding="{Binding title}"
Margin="0,15,0,0"
Title="Select a Trade">
</Picker>
如果您正在运行代码,则选择器始终为空。有什么建议么? 谢谢。
答案 0 :(得分:1)
这应该很简单:
Dog<String> extending Pet<dynamic>
属性后触发dynamic
事件因此,假设您对PropertyChanged
的声明如下:
Trades
您可以打电话。在Trades
public ObservableCollection<Trade> Trades { get; private set; }
(或ViewModel类型中的等效项)
或者,您可以更改对财产的声明:
RaisePropertyChanged("Trades");
或者我个人更希望从头开始就简单地初始化ObservableCollection,然后在GetTradesData()
中简单地添加项目:
private ObservableCollection<Trade> _trades;
public ObservableCollection<Trade> Trades
{
get => _trades;
set
{
_trades = value;
RaisePropertyChanged("Trades");
}
}
和GetTradesData()
中的
public ObservableCollection<Trade> Trades { get; } = new ObservableCollection<Trade>();