繁体   English   中英

C#中的列表框未显示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM