我的代码中已经有一个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;
但是,它没有出现。有没有人看到这个伎俩?
答案 0 :(得分:3)
您的绑定标记不正确。 “绑定{名称}”对XAML来说并不意味着什么。 {Binding Name}意味着databind你想要做的上下文的属性名称。
替换:
<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?
答案 1 :(得分:0)
看起来您没有将产品添加到乳制品中。当你绑定它时,dairy produkte仍然是一个空列表。
试
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);
}