c# wpf中如何向expander中动态添加xml中的内容
如题。我现在有一个xml文件记录了一些数据,希望在expander中分层次的显示出来。怎么做呢?...
如题。我现在有一个xml文件记录了一些数据,希望在expander中分层次的显示出来。怎么做呢?
展开
2个回答
展开全部
提供下思路。
例如有一个xml,层次是
<classes>
<Students Name ="class1">
< Student>
<UserName>01</UserName>
<Sex>1</Sex>
<Age>22</Age>
</Student>...
就是年级有几个班,每个班有几个学生这样子。
expander的header展示班级名称,content展示每个班的学生列表。
建议用后台代码去动态创建expander和listbox。listbox的itemtemplate可以在前台写,后台引用。
后台遍历XML数据源的时候看第一层有几个数据(demol里的Students)创建expander并对其header赋值。然后创建expander.content中的listbox并赋值其Itemsource。
也可以刚开始只创建expander。在expanderItem展开的时候再去动态对其content创建listobx并赋值。
例如有一个xml,层次是
<classes>
<Students Name ="class1">
< Student>
<UserName>01</UserName>
<Sex>1</Sex>
<Age>22</Age>
</Student>...
就是年级有几个班,每个班有几个学生这样子。
expander的header展示班级名称,content展示每个班的学生列表。
建议用后台代码去动态创建expander和listbox。listbox的itemtemplate可以在前台写,后台引用。
后台遍历XML数据源的时候看第一层有几个数据(demol里的Students)创建expander并对其header赋值。然后创建expander.content中的listbox并赋值其Itemsource。
也可以刚开始只创建expander。在expanderItem展开的时候再去动态对其content创建listobx并赋值。
追问
能有具体的代码给看一下吗?
追答
展开全部
例子
先看一下
private XmlDataDocument xmlDoc;
private void button1_Click(object sender, EventArgs e)
{
comboBox1.Items.Add("1");
comboBox1.Items.Add("1");
XmlDocument xml = new XmlDocument();
xml.Load(System.IO.Path.GetFileName(@"bf.xml"));
XmlNode nose = xml.SelectSingleNode("request");
nose.RemoveAll();
xml.Save(System.IO.Path.GetFileName("bf.xml"));
string functionIDs = "updateMultiItemsStock";
string dateTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
xmlLoad();
XmlNode xmldocSelect = xmlDoc.SelectSingleNode("request");
XmlElement functionID = xmlDoc.CreateElement("functionID");
functionID.InnerText = functionIDs;
XmlElement time = xmlDoc.CreateElement("time");
time.InnerText = dateTime;
xmldocSelect.AppendChild(functionID);
xmldocSelect.AppendChild(time);
XmlElement ItemsList = xmlDoc.CreateElement("ItemsList");
xmldocSelect.AppendChild(ItemsList);
XmlElement ItemUpadteInfo = null;
XmlElement outerItemID = null;
XmlElement stockCount = null;
for (int i = 0; i < 5; i++)
{
ItemUpadteInfo = xmlDoc.CreateElement("ItemUpadteInfo");
ItemsList.AppendChild(ItemUpadteInfo);
outerItemID = xmlDoc.CreateElement("outerItemID");
ItemUpadteInfo.AppendChild(outerItemID);
stockCount = xmlDoc.CreateElement("stockCount");
ItemUpadteInfo.AppendChild(stockCount);
outerItemID.InnerText = "20100210";
stockCount.InnerText = "20";
ItemUpadteInfo.AppendChild(stockCount);
ItemUpadteInfo.AppendChild(outerItemID);
}
xmlDoc.Save(System.IO.Path.GetFileName("bf.xml"));
}
把ItemsList换成expander; 下面要添加什么改一下就行了for里面的东西就行了 正式的应该是在foreach循环里面添加数据
先看一下
private XmlDataDocument xmlDoc;
private void button1_Click(object sender, EventArgs e)
{
comboBox1.Items.Add("1");
comboBox1.Items.Add("1");
XmlDocument xml = new XmlDocument();
xml.Load(System.IO.Path.GetFileName(@"bf.xml"));
XmlNode nose = xml.SelectSingleNode("request");
nose.RemoveAll();
xml.Save(System.IO.Path.GetFileName("bf.xml"));
string functionIDs = "updateMultiItemsStock";
string dateTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
xmlLoad();
XmlNode xmldocSelect = xmlDoc.SelectSingleNode("request");
XmlElement functionID = xmlDoc.CreateElement("functionID");
functionID.InnerText = functionIDs;
XmlElement time = xmlDoc.CreateElement("time");
time.InnerText = dateTime;
xmldocSelect.AppendChild(functionID);
xmldocSelect.AppendChild(time);
XmlElement ItemsList = xmlDoc.CreateElement("ItemsList");
xmldocSelect.AppendChild(ItemsList);
XmlElement ItemUpadteInfo = null;
XmlElement outerItemID = null;
XmlElement stockCount = null;
for (int i = 0; i < 5; i++)
{
ItemUpadteInfo = xmlDoc.CreateElement("ItemUpadteInfo");
ItemsList.AppendChild(ItemUpadteInfo);
outerItemID = xmlDoc.CreateElement("outerItemID");
ItemUpadteInfo.AppendChild(outerItemID);
stockCount = xmlDoc.CreateElement("stockCount");
ItemUpadteInfo.AppendChild(stockCount);
outerItemID.InnerText = "20100210";
stockCount.InnerText = "20";
ItemUpadteInfo.AppendChild(stockCount);
ItemUpadteInfo.AppendChild(outerItemID);
}
xmlDoc.Save(System.IO.Path.GetFileName("bf.xml"));
}
把ItemsList换成expander; 下面要添加什么改一下就行了for里面的东西就行了 正式的应该是在foreach循环里面添加数据
追问
额。这个expander是wpf里的expander阿。你是不是搞错了什么。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询