【发布时间】:2019-03-20 22:08:56
【问题描述】:
当我通过按钮从 ListView 中单击时,我遇到了数据未正确绑定在详细信息页面上的问题。 ListView 完美绑定,对象被传递到详细信息页面。读取对象的 ID,并从 API 调用对象的完整版本并将其设置为对象的新实例。当我添加断点时,完整的对象可用,但视图上的标签未填充。这是 ViewModel:
DetailsViewModel.cs
public class DetailsViewModel
{
public Deal Deal { get; set; }
public int DealId { get; set; }
public DetailsViewModel(int id)
{
Deal = new Deal();
DealId = id;
}
public async void GetDeal()
{
var deal = await Deal.GetDeal(DealId);
if(deal != null)
{
Deal = deal;
}
}
}
代码隐藏如下:
DetailPage.Xaml.cs
DetailsViewModel viewModel;
int dealId;
public DetailPage(int id)
{
InitializeComponent();
dealId = id;
viewModel = new DetailsViewModel(dealId);
BindingContext = viewModel;
}
protected override void OnAppearing()
{
base.OnAppearing();
viewModel.GetDeal();
}
Xaml 文件是
DetailPage.Xaml
<ContentPage.Content>
<ScrollView>
<StackLayout x:Name="detailsLayout">
<Label Text="{Binding Deal.Name}" />
</StackLayout>
</ScrollView>
</ContentPage.Content>
当我在 DetailsViewModel 上的 Deal = deal 中放置断点时,Deal 对象存在并且具有正确的数据,但我只是得到一个空白屏幕。我已经尝试使用 Text="{Binding Name}" 和 Text="{Binding Deal.Name}" 的标签。
我也尝试在 ViewModel 的 GetDeal 函数中手动创建交易,但仍然没有任何绑定。
【问题讨论】:
标签: mvvm data-binding xamarin.forms