[英]ListBox in C# doesn't show up
我的代码中已经有一个ListBox,现在我添加了一个新列表:
<ListBox x:Name="Diaryresult"
Foreground="Black"
Margin="19,0,0,8">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Binding {name}"
FontSize="24" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我用以下代码填充此列表:
XElement diary = XElement.Parse(e.Result);
IEnumerable<XElement> diaryelements = diary.Elements("diaryelement");
List<Produkt> diaryprodukte = new List<Produkt>();
foreach (XElement diaryelement in diaryelements)
{
Produkt p = new Produkt();
p.name = diaryelement.Element("diaryshortitem").Element("description").Element("name").Value;
p.shortfacts = diaryelement.Element("diaryshortitem").Element("data").Element("kj").Value + " KJ - "
+ diaryelement.Element("diaryshortitem").Element("data").Element("kcal").Value + "kcal";
diary.Add(p);
Debug.WriteLine("Added "+p.name);
}
Diaryresult.ItemsSource = diaryprodukte;
Diaryresult.Visibility = System.Windows.Visibility.Visible;
但是,它没有显示。 有人看到这个把戏吗?
您的绑定标签不正确。 “绑定{Name}”对于XAML毫无意义。 {Binding Name}意味着要绑定上下文的属性Name,这就是您要尝试执行的操作。
更换:
<TextBlock Text="Binding {name}" FontSize="24" />
带有:
<TextBlock Text="{Binding name}" FontSize="24" />
另外,您需要将元素添加到列表中:
dairyprodukt.Add(p);
并且,请记住一旦完成就调用NotifyPropertyChanged (),以将更改通知UI线程。 我的意思是,您正在使用Diaryresult.Visibility = System.Windows.Visibility.Visible;
这是通知UI的方法吗?您是使用MVVM还是CodeBehind?
您似乎没有将您的产品添加到Dairyprodukte中。 绑定它时,dairyprodukte仍然是一个空列表。
尝试
foreach (XElement diaryelement in diaryelements)
{
Produkt p = new Produkt();
p.name = diaryelement.Element("diaryshortitem").Element("description").Element("name").Value;
p.shortfacts = diaryelement.Element("diaryshortitem").Element("data").Element("kj").Value + " KJ - "
+ diaryelement.Element("diaryshortitem").Element("data").Element("kcal").Value + "kcal";
diary.Add(p);
Debug.WriteLine("Added "+p.name);
diaryprodukte.Add(p);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.