【发布时间】:2014-05-13 20:07:43
【问题描述】:
我能够从数据库中获取现有数据以加载到我的数据网格中,它工作得很好。所有列表都绑定到数据网格上。但是,在一种情况下,我只需要我的反序列化流直接绑定到我的数据网格上。我尝试了一种与 db 类似的方法,但由于某种原因它不起作用。我运行了调试器,我绑定到单独数据网格的两个列表都包含反序列化流,所以它们不为空。我想我错过了一些东西。
这是我所做的:
public static LotInformation DeserializedStream(string filePath) {
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "lot_information";
xRoot.IsNullable = false;
// Create an instance of lotinformation class.
var lot = new LotInformation();
// Create an instance of stream writer.
TextReader txtReader = new StreamReader(filePath);
// Create and instance of XmlSerializer class.
XmlSerializer xmlSerializer = new XmlSerializer(typeof(LotInformation), xRoot);
// DeSerialize from the StreamReader
lot = (LotInformation)xmlSerializer.Deserialize(txtReader);
LotInformation newList = new LotInformation();
List<Components> DeserialComponentsList = new List<Components>();
List<Families> DeserialFamiliesList = new List<Families>();
foreach (Components comp in lot.Components)
{
newList.Components.Add(comp);
Console.WriteLine(comp);
}
DeserialComponentsList = newList.Components.ToList();
foreach (Families fam in lot.Families)
{
newList.Families.Add(fam);
Console.WriteLine(fam);
}
DeserialFamiliesList = newList.Families.ToList();
Console.WriteLine(DeserialComponentsList.Count);
Console.WriteLine(" ");
Console.WriteLine(DeserialFamiliesList.Count);
// Close the stream reader
txtReader.Close();
return lot;
}
属性:
public List<Components> DeserialComponentsList
{
get {
return deserialComponentsList;
}
set {
deserialComponentsList = value;
RaisePropertyChanged("DeserialComponentsList");
}
}
public List<Families> DeserialFamiliesList
{
get
{
return deserialFamiliesList;
}
set
{
deserialFamiliesList = value;
RaisePropertyChanged("DeserialFamiliesList");
}
编辑:似乎属性由于某种原因没有获得传递给它们的数据列表。将反序列化的字符串添加到列表后,程序永远不会运行或到达属性。该程序仅在视图首次打开时检测属性(属性为空),但在选择一个文件并将该反序列化的 xml 并将其放入列表并将该列表传递给属性后由于某种原因不起作用。
【问题讨论】: