Запись файла.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;
}