0

我的代码中已经有一个 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;

但是,它没有出现。有人看到诀窍了吗?

4

2 回答 2

3

您的绑定标签不正确。“绑定 {Name}”对 XAML 没有任何意义。{Binding 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?

于 2012-09-10T21:05:20.200 回答
0

您似乎没有将您的 Produkt 添加到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);
            }
于 2012-09-10T21:10:50.570 回答