我想在自定义列表中显示之前提取的数据,但我发现提取数据的方法对我来说并不容易,所以我会找到一种方法来显示我的数据而不更改xml读取方法。 这就是我希望我的列表是(xml):
<ListBox Height="516" HorizontalAlignment="Left" Margin="16,74,0,0" Name="listBox1" VerticalAlignment="Top" Width="430" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="132">
<Image Source="{Binding wkpinImage}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/>
<StackPanel Width="370">
<TextBlock Text="{Binding Day}" Foreground="#FFC8AB14" FontSize="28" />
<TextBlock Text="{Binding Low}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding High}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding Condition}" TextWrapping="Wrap" FontSize="26" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是xml阅读方法(c#):
while (reader.Read())
{
switch (reader.Name)
{
case ("day_of_week"):
{
listBox1.Items.Add(new ListBoxItem()
{
Content = reader.GetAttribute("data")
});
Day = Content.ToString();
} break;
...
答案 0 :(得分:0)
我建议使用MVVM方法将项目绑定到列表框。
这是一个非常好的教程,介绍如何将MVVM绑定到列表框:
关于MVVM有很多好处:
答案 1 :(得分:0)
在我看来,AT ALL的最佳解决方案是XML序列化!
您应该只创建一个可序列化的类 ( REMEMEBER: - 使用基础数据类型(否则你需要翻译属性) - 只能序列化公共属性 - 保持一个没有参数的构造函数 )
...
using System.Xml.Serialization;
public class SerializableClass
{
[XmlAttribute(AttributeName = "Day")]
public int Day
{
get
{
...
}
set
{
...
}
}
[XmlIgnore]
public CustomEnumerationType PublicPropertyNotToReadWrite
{
get
{
...
}
set
{
...
}
}
...
}
使用这些静态方法来序列化(将类的对象输出到SOMETHING [例如XML文件/流])并反序列化(INPUT FROM SOMETHING [例如XML文件/流]到对象的新实例你的班级):
(下一个2静态方法可以从/向隔离存储文件读取/写入可串行化的对象!!)
public static object DeserializeObject(string fileName,Type objectType) { 使用(IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication()) using(IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName,FileMode.Open,FileAccess.Read)) using(TextReader xmlReader = new StreamReader(fileStream)) { XmlSerializer xmlSerializer = new XmlSerializer(objectType);
return xmlSerializer.Deserialize(xmlReader);
}
}
public static void SerializeObject(string fileName, object target, Type objectType)
{
using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName, FileMode.Create, FileAccess.Write))
using (TextWriter xmlWriter = new StreamWriter(fileStream))
{
XmlSerializer xmlSerializer = new XmlSerializer(objectType);
xmlSerializer.Serialize(xmlWriter, target);
}
}
在我看来,没有比这种方法更好的了!
我希望这可以帮到你!