Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将xml序列化到自定义类中,然后将值添加到可观察的集合中_C#_.net_Xml - Fatal编程技术网

C# 将xml序列化到自定义类中,然后将值添加到可观察的集合中

C# 将xml序列化到自定义类中,然后将值添加到可观察的集合中,c#,.net,xml,C#,.net,Xml,如何将数据序列化为xml,XBMC是我的自定义类 private static XBMC LoadXbmcShows(string XMlFile) { XBMC XBMCSShowsList; TextReader Reader = new StreamReader(XMlFile); XmlSerializer serializer = new XmlSerializer(typeof(XBMC)); XBMCSShowsList = (XBMC)serial

如何将数据序列化为xml,XBMC是我的自定义类

private static XBMC LoadXbmcShows(string XMlFile)
{
    XBMC XBMCSShowsList;
    TextReader Reader = new StreamReader(XMlFile);
    XmlSerializer serializer = new XmlSerializer(typeof(XBMC));
    XBMCSShowsList = (XBMC)serializer.Deserialize(Reader);
    Reader.Close();
    return XBMCSShowsList;
 }

XBMC XBMCSList = LoadXbmcShows(_XMLFile);
这就是我如何创建
可观测集合的方法

readonly ObservableCollection<XBMC> myCollection
    = new ObservableCollection<XBMC>()

public ObservableCollection<XBMC> MyCollection
{ get { return myCollection; } }

您的意思是:如何将反序列化结果添加到列表中?下面是我反序列化并添加到构造函数中的示例:

private static XBMC LoadXbmcShows(string XMlFile)
{
  XBMC XBMCSShowsList;
  TextReader Reader = new StreamReader(XMlFile);
  XmlSerializer serializer = new XmlSerializer(typeof(XBMC));
  XBMCSShowsList = (XBMC)serializer.Deserialize(Reader);
  Reader.Close();
  return XBMCSShowsList;
}

readonly ObservableCollection<XBMCShow> myCollection = 
  new ObservableCollection<XBMCShow>()

public ObservableCollection<XBMCShow> MyCollection 
{ get { return myCollection; } }

public MainWindow()
{
  InitializeComponent();

  XBMC XBMCSList = LoadXbmcShows(_XMLFile);
  myCollection = new new ObservableCollection<XBMCShow>(XBMCSList.Show);
  Showlistbox.ItemsSource = myCollection;
}
。。以及XAML:

<ListBox x:Name="Showlistbox"> 
  <ListBox.ItemTemplate> 
    <DataTemplate> 
      <TextBlock Text="{Binding ShowName}" /> 
    </DataTemplate> 
  </ListBox.ItemTemplate> 
</ListBox>


XBMCSList是一个
XBMC
还是几个?变量名有点误导PS:对于IDisposable对象(StreamReader是IDisposable),使用(var reader=new StreamReader(xmlfile)){…do sthng…}这样的模式,即使反序列化引发异常,您的读取器也将被关闭和释放。如果您愿意,我可以添加类定义和xml文件的内容?是的,这就是我想要说的,我键入了您的代码,它只是说'MySQlXML.MainWindow.MyCollection'是一个'property',但用作'type',这个错误'MySQlXML.MainWindow.XBMCSList'是一个'field',但用作'type'。您在方法中运行这两行吗?你能分享代码吗?不,我只是做了这个
readonly observedcollection myCollection=new observedcollection()public observedcollection myCollection{get{return myCollection;}}XBMC XBMCSList=LoadXbmcShows(_XMLFile);MyCollection.Add(XBMCSList)您必须在方法、构造函数或其他东西中执行,而不是直接在属性和字段之间的类中执行!好的,我为ht主窗口添加了代码,这样您就可以看到发生了什么
public partial class XBMC 
{ 
  private XBMCShow[] showField; 

  [System.Xml.Serialization.XmlElementAttribute("Show")] 
  public XBMCShow[] Show 
  { 
    get { return this.showField; } 
    set { this.showField = value; } 
  } 
}
<ListBox x:Name="Showlistbox"> 
  <ListBox.ItemTemplate> 
    <DataTemplate> 
      <TextBlock Text="{Binding ShowName}" /> 
    </DataTemplate> 
  </ListBox.ItemTemplate> 
</ListBox>