往combobox中动态加载xml文件

zhusunbaozi 2014-11-11 03:24:01
现有一个Window窗口LoginPage和一个Page页LoginLoad,LoginLoad中有一个combobox。现在程序从LoginPage开始,加载LoginLoad。所以在LoginPage中准备写一个读取xml函数,往combobox中插入xml的节点。
xml文件内容:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<language name="简体中文" key="2052" checkvalue="1"/>
<language name="繁體中文" key="1028" checkvalue="0"/>
<language name="U.S. English" key="1033" checkvalue="0"/>
<language name="日本语" key="1041" checkvalue="0"/>
</root>

然后自己写的xml读取函数:
        public void Xmlshow()//显示xml文件的信息
{
Frame frame = new Frame();
loginFrame.Children.Add(frame);
frame.Navigate(new Uri("LoginLoad.xaml", UriKind.RelativeOrAbsolute));

//使用DataSet对象读取xml
DataSet Xmlds = new DataSet();
Xmlds.ReadXml(@"languagesSetting.xml");
for (int i = 0; i < Xmlds.Tables["language"].Rows.Count;i++ )//往combobox中添加选项
{
string name=Xmlds.Tables["language"].Rows[i]["name"].ToString();
string checkvalue = Xmlds.Tables["language"].Rows[i]["checkvalue"].ToString();
LoginLoad Ll = new LoginLoad();
Ll.Loadlanguage.SelectedItem=name;}}

现在问题来了:我该怎么把xml中的内容插入combobox做成下拉列表呢?
...全文
361 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Veary 2014-11-12
  • 打赏
  • 举报
回复
引用 3 楼 u011182647 的回复:
[quote=引用 2 楼 zhusunbaozi 的回复:] [quote=引用 1 楼 u011182647 的回复:] 你都把xml里面的内容读出来了 给combobox不会吗? 你把xml的内容读出来保存成一个list(你自己定义一个类)。然后直接你的combobox的ItemsSource等于list 然后设置SelectedValuePath以及DisplayMemberPath就可以了
这个还需要涉及数据banding?好麻烦啊[/quote] 。就定义一个list然后给combobox,让combobox显示哪个属性实际选择的是哪个属性就可以了啊[/quote] 正解.
竹笋包子 2014-11-12
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
http://blog.csdn.net/duanzi_peng/article/details/24018431 http://www.cnblogs.com/shuang121/archive/2012/11/26/2788991.html
为什么自己就百度不到这么详细的资料呢?大神提供的资料很详细很好啊
  • 打赏
  • 举报
回复

string xmlStrPath = @"D:\ceshi\20141111.xml";
                XElement root = XElement.Load(xmlStrPath);
                IEnumerable<XElement> list = root.Elements("language");
                var temp = from p in list
                           select new Language
                           {
                               name = p.Attribute("name").Value,
                               key = p.Attribute("key").Value
                           };
                this.myCbo.SelectedIndex = 0;
                this.myCbo.SelectedValuePath = "key";
                this.myCbo.DisplayMemberPath = "name";
                this.myCbo.ItemsSource = temp.ToList();
language类:

 public class Language
    {
        public string name
        {
            get;
            set;
        }
        public string key
        {
            get;
            set;
        }
    }
竹笋包子 2014-11-11
  • 打赏
  • 举报
回复
引用 3 楼 u011182647 的回复:
[quote=引用 2 楼 zhusunbaozi 的回复:] [quote=引用 1 楼 u011182647 的回复:] 你都把xml里面的内容读出来了 给combobox不会吗? 你把xml的内容读出来保存成一个list(你自己定义一个类)。然后直接你的combobox的ItemsSource等于list 然后设置SelectedValuePath以及DisplayMemberPath就可以了
这个还需要涉及数据banding?好麻烦啊[/quote] 。就定义一个list然后给combobox,让combobox显示哪个属性实际选择的是哪个属性就可以了啊[/quote] OK!我先试一试,看写不写的出。3Q
小恒丶 2014-11-11
  • 打赏
  • 举报
回复
引用 2 楼 zhusunbaozi 的回复:
[quote=引用 1 楼 u011182647 的回复:] 你都把xml里面的内容读出来了 给combobox不会吗? 你把xml的内容读出来保存成一个list(你自己定义一个类)。然后直接你的combobox的ItemsSource等于list 然后设置SelectedValuePath以及DisplayMemberPath就可以了
这个还需要涉及数据banding?好麻烦啊[/quote] 。就定义一个list然后给combobox,让combobox显示哪个属性实际选择的是哪个属性就可以了啊
竹笋包子 2014-11-11
  • 打赏
  • 举报
回复
引用 1 楼 u011182647 的回复:
你都把xml里面的内容读出来了 给combobox不会吗? 你把xml的内容读出来保存成一个list(你自己定义一个类)。然后直接你的combobox的ItemsSource等于list 然后设置SelectedValuePath以及DisplayMemberPath就可以了
这个还需要涉及数据banding?好麻烦啊
小恒丶 2014-11-11
  • 打赏
  • 举报
回复
你都把xml里面的内容读出来了 给combobox不会吗? 你把xml的内容读出来保存成一个list(你自己定义一个类)。然后直接你的combobox的ItemsSource等于list 然后设置SelectedValuePath以及DisplayMemberPath就可以了

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧