在ListBox上编写.text文件

时间:2014-02-26 08:59:24

标签: c# wpf listbox

我要在ListBox中写出一个文本文件,但我得到的只是一个列表“BabyName”。我的代码如下所示:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public void FirstDecadeTopNames_Loaded(object sender, RoutedEventArgs e)
    {
        FileStream fs = new FileStream(@"D:\Dokumenter\Skole\6. semester\GUI\Exercises\Exercise4\WpfApplication1\04-babynames.txt", FileMode.Open);
        StreamReader sr = new StreamReader(fs, Encoding.Default);
        List<BabyName> babyNames = new List<BabyName>();

        while (!sr.EndOfStream)
        {
            BabyName name = new BabyName(sr.ReadLine());
            babyNames.Add(name);
            FirstDecadeTopNames.Items.Add(name);
        }
    }
}

我假设我没有将StreamReader放入我的列表中,但是我无法看到我做错了。

更新

这是ListBox的XAML:

<ListBox Name="FirstDecadeTopNames"
         Margin="10"
         Loaded="FirstDecadeTopNames_Loaded" >
</ListBox>

3 个答案:

答案 0 :(得分:1)

我认为您应该将DisplayMemberPath属性与listBox一起使用,如下所示:

<ListBox DisplayMemberPath="FieldName"...>

答案 1 :(得分:0)

您没有向我们展示声明通用列表Babyname的代码,但我认为您无论如何都不需要使用它,而是:

List <string> names=new List<string>();

public void FirstDecadeTopNames_Loaded(object sender, RoutedEventArgs e)
{
    FileStream fs = new FileStream(@"D:\Dokumenter\Skole\6. semester\GUI\Exercises\Exercise4\WpfApplication1\04-babynames.txt", FileMode.Open);
    StreamReader sr = new StreamReader(fs, Encoding.Default);

    while (!sr.EndOfStream)
    {
        names.Add(sr.ReadLine());           
    }
    FirstDecadeTopNames.ItemSource=names;
}

答案 2 :(得分:0)

如果在没有正确路径的WPF中使用Binding,它将显示您绑定的任何内容的.ToString()。在你的情况下它是list<BabyName>所以它只显示BabyName但不显示值。

例如,如果你有

Class BabyName
{
  public string Name{get;set;}
}

然后使用{Binding Path="Name"}

进行绑定