如何使用C#在Windows Phone上的列表框中显示项目字典?

时间:2013-07-31 10:41:49

标签: c# windows-phone-7 dictionary

在这里我打开了一个单词/定义文本文件。我把它修剪成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);
     }
 }

1 个答案:

答案 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>