Запись файла.txt в 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 в свой список, но я не могу видеть, где я делаю это неправильно.

Обновить:

Вот XAML для ListBox:

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

3 ответа

Я думаю, что вы должны использовать свойство DisplayMemberPath со своим listBox следующим образом:

<ListBox DisplayMemberPath="FieldName"...>

Когда вы используете Binding в WPF без правильного пути, он будет отображаться .ToString() что бы вы ни связывали В вашем случае это list<BabyName> поэтому он отображает только BabyName, но не значение.

Например, если у вас есть

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

Затем связать с помощью {Binding Path="Name"}

Вы не показываете нам код, в котором объявлен общий список 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;
}
Другие вопросы по тегам