在这里我打开了一个单词/定义文本文件。我把它修剪成newword
并将其定义为newdefn
。我将它放在字典中,创建如下:
Dictionary<string, string> d = new Dictionary<string, string>();
我宣称是全球性的。由于它位于while(!endofstream)
循环内,因此所有单词和定义都存储在那里。
我的问题是如何将字典中的值放入listbox
。我的代码:
public search()
{
InitializeComponent();
Stream txtStream = Application.GetResourceStream(new
Uri("/PanoramaApp1;component/word.txt", UriKind.Relative)).Stream;
using (StreamReader sr = new StreamReader(txtStream))
{
string jon;
//definition.Text = sr.ReadToEnd();
while (!sr.EndOfStream)
{
jon = sr.ReadLine();
newword = (word.Trim(new Char[] { '-',' ' }));
newdefn = (defn.Trim(new Char[] { '-',' ' }));
d.Add(newword, newdefn);
}
}
}
我现在想在文本框中进行搜索,结果显示在列表框中。但我在“文本框选择更改”中的部分有问题。我在listbox.Items.Add(str);
List<string> list = new List<string>(d.Keys);
foreach (string str in list)
{
if (str.StartsWith(searchbox.Text,
StringComparison.CurrentCultureIgnoreCase))
{
listbox.Items.Add(str);
}
}
答案 0 :(得分:1)
您必须将Dictionary
设置为ItemsSource
的{{1}}属性:
ListBox
您可以使用yourListBox.ItemsSource = d;
自定义项目的显示方式。例如,仅显示单词:
DataTemplate
要在点击项目时在MessageBox中显示定义,您可以在事件处理程序中执行以下操作:
<ListBox Name="yourListBox" >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}" Tap="Item_Tap" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>