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

バインディング タグが正しくありません。"Binding {Name}" は、XAML では何の意味もありません。{Binding Name} は、実行しようとしているコンテキストのプロパティ Name をデータバインドすることを意味します

交換:

<TextBlock Text="Binding {name}" FontSize="24" />

と:

<TextBlock Text="{Binding name}" FontSize="24" />

また、要素をリストに追加する必要があります。

dairyprodukt.Add(p);

そして、UI スレッドに変更を通知するために、完了したらNotifyPropertyChanged () を呼び出すことを忘れないでください。つまり、これを使用して UI に通知する方法ですDiaryresult.Visibility = System.Windows.Visibility.Visible;。MVVM または CodeBehind を使用していますか?

于 2012-09-10T21:05:20.200 に答える
0

Produkt を Dairyprodukte に追加しているようには見えません。バインドすると、dailyprodukte はまだ空のリストです。

試す

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 に答える