我已经制作了一个Windows桌面应用程序,现在正在制作该程序的Windows 8 / 8.1 / 10商店应用程序版本。我知道除了更多的代码之外,我还必须使用更多的MVVM编码才能使其正常工作。对于那些想要查看原始桌面程序的用户,它位于 https://github.com/JescoInc/Japanese-and-English-Speech-Dictionary
所以,这是我开发的课程。
namespace WindowsEJDictionary
{
public class xmlData
{
private string english;
private string romaji;
private string kanji;
public string English
{
get { return english; }
set { english = value; }
}
public string Romaji
{
get { return romaji; }
set { romaji = value; }
}
public string Kanji
{
get { return kanji; }
set { kanji = value; }
}
}
}
主要课程:
private void queryXML()
{
string xmlPath = "JapaneseEnglishData.xml";
XDocument xDoc = XDocument.Load(xmlPath);
var lstWord = xDoc.Root.Elements("Word").Select(x => new
{
English = x.Element("English").Value
}).ToList();
this.listBx.ItemsSource = lstWord;
}
}
private void queryXMLTest2()
{
string xmlPath = "JapaneseEnglishData.xml";
XDocument xDoc = XDocument.Load(xmlPath);
var lstWord = from item in xDoc.Descendants("Word")
select new
{
English = item.Element("English").Value,
};
foreach (var i in lstWord)
{
listBx.ItemsSource = i.English.ToList();
}
XAML:
提醒我 | 编辑 | 改变类型 题 你不能在自己的帖子上投票 0
我已经制作了一个Windows桌面应用程序,现在正在制作该程序的Windows 8 / 8.1 / 10商店应用程序版本。我知道除了更多的代码之外,我还必须使用更多的MVVM编码才能使其正常工作。对于那些想要查看原始桌面程序的用户,它位于 https://github.com/JescoInc/Japanese-and-English-Speech-Dictionary
所以,这是我开发的课程。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
queryXML();
}
private void queryXML()
{
string xmlPath = "JapaneseEnglishData.xml";
XDocument xDoc = XDocument.Load(xmlPath);
var lstWord = xDoc.Root.Elements("Word").Select(x => new
{
English = x.Element("English").Value
}).ToList();
this.listBx.ItemsSource = lstWord;
}
}
}
XAML代码:
<Page
x:Class="WindowsEJDictionary.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WindowsEJDictionary"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto">
</RowDefinition>
</Grid.RowDefinitions>
<Button Content="Button" HorizontalAlignment="Left" Margin="718,625,0,0" VerticalAlignment="Top" Width="144"/>
<ListBox Name="listBx" HorizontalAlignment="Left" Height="398" Margin="109,255,0,0" VerticalAlignment="Top" Width="494"/>
</Grid>
</Page>
和XML文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--This is a generated XML File-->
<WordList>
<Word>
<English>Sunday</English>
<Romaji>nichiyoubi</Romaji>
<Kanji>にちようび</Kanji>
</Word>
<Word>
<English>Weekend</English>
<Romaji>shuumatsu</Romaji>
<Kanji>しゅうまつ</Kanji>
</Word>
<Word>
<English>vacation</English>
<Romaji>yasumi</Romaji>
<Kanji>やすみ</Kanji>
</Word>
<Word>
<English>rest</English>
<Romaji>yasumi</Romaji>
<Kanji>やすみ</Kanji>
</Word>
<Word>
<English>Goodnight</English>
<Romaji>oyasumi nasai</Romaji>
<Kanji>おやすみなさい</Kanji>
</Word>
</WordList>
好的,现在有些背景。测试1和测试2产生不同的结果,但两者都产生不需要的结果。因此,以下是结果屏幕截图的链接。 (注意:我对LINQ提出了挑战,我很自豪,这是我问题的主要原因)。
答案 0 :(得分:0)
所以,我的问题的答案如下。 而不是使用LINQ和Lambda表达式,我只需要自己使用LINQ。 所以,让我们打破这个。
var listOEnglish =来自XDoc.Root.Elements中的wordList(&#34; Word&#34;)
//这一行声明了我们想要迭代的根元素。
选择wordList.Element(&#34;英语&#34;)。值;
//这一行是设置我们想要用英语标签中的单词迭代的子元素。
listBx.ItemsSource = listOEnglish.ToList();
//此行将列表框的itemsource或数据绑定设置为listOEnglish作为列表。
非常感谢FlatRedBall(FRB)社区的Jesse向我展示了如何使用LINQ并帮助我提出解决方案。
private void queryXML2()
{
string xmlPath = "JapaneseEnglishData.xml";
XDocument XDoc = XDocument.Load(xmlPath);
var listOEnglish = from wordList in XDoc.Root.Elements("Word")
select wordList.Element("English").Value;
listBx.ItemsSource = listOEnglish.ToList();
}