我要在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>
答案 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"}