C#中的ListBox没有显示出来

时间:2012-09-10 21:02:03

标签: c# wpf listbox

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

但是,它没有出现。有没有人看到这个伎俩?

2 个答案:

答案 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);
            }