【发布时间】:2016-11-18 23:17:08
【问题描述】:
我目前正在尝试在列表视图中进行单向数据绑定,这样当我的应用程序启动时,它将打开一个方法,检查传入的包,填充列表,并将该列表绑定到列表视图然后将显示每个包及其信息。但是,出于某种原因,ListView 实际上并没有填充。我已经调试过了,所有的后端代码都运行良好——局部变量,比如包模型和模型列表,都完美地填充了。但是,ListView 不包含任何内容,当我查看局部变量时,它显示每个内容片段完全为空。
这是我的代码:
DeliveryPlannerData.cs
public static List<ShipmentModel> shipments { get; set; } = new List<ShipmentModel>();
public async static void populateDeliveryPlanner(string startDate, string endDate)
{
var deliveryPlanner = await DeliveryPlanner.DeliveryPlannerRequest(startDate, endDate);
//if (panel.Children.Count > 0)
// panel.Children.Clear();
try
{
List<string> trackingNumber = deliveryPlanner["trackingNumber"];
List<string> lastScanDate = deliveryPlanner["lastScanDate"];
List<string> scheduledDelivery = deliveryPlanner["scheduledDelivery"];
List<string> status = deliveryPlanner["status"];
for (int i = 0; i < trackingNumber.Count; i++)
{
shipments.Add(new ShipmentModel(
trackingNumber[i], lastScanDate[i], scheduledDelivery[i], getStatus(status[i])
));
var v = shipments;
}
}
catch (NullReferenceException e)
{
var error = e;
}
} // populateDeliveryPlanner
ShipmentModel.cs
public class ShipmentModel : INotifyPropertyChanged
{
public string TrackingNumber;
public string LastScanDate;
public string ScheduledDelivery;
public string Status;
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public ShipmentModel(string trackingNumber, string lastScanDate, string scheduledDelivery, string status)
{
TrackingNumber = trackingNumber;
LastScanDate = lastScanDate;
ScheduledDelivery = scheduledDelivery;
Status = status;
}
public string trackingNumber
{
get { return this.TrackingNumber; }
set
{
this.TrackingNumber = value;
this.OnPropertyChanged();
}
}
DeliveryPlanner.xaml
<ListView x:Name="listView" ItemTemplate="{StaticResource ShipmentModelTemplate1}" ItemsSource="{Binding shipments, Mode=OneWay}" Margin="19,12,19,0" Grid.Row="1" VerticalAlignment="Bottom"/>
这显然不是每个文档中的所有代码,但它是重要的部分。 我想知道我做错了什么? listView 拒绝填充。
【问题讨论】:
-
尝试制作
shipments和ObservableCollection -
嘿,谢谢!那工作得很好。如果您不介意,您能解释一下为什么从 List 更改为 ObservableCollection 可以做到这一点吗?
-
是的,你需要 ObservableCollection。看这里的区别。 stackoverflow.com/a/4197068/4585476
标签: c# listview data-binding uwp uwp-xaml