2

実行時にWindowsMetroスタイルのアプリケーションのListBoxコントロールに新しいアイテムを追加するにはどうすればよいですか?

私はWinFormsの出身なので、ご想像のとおり、今はかなり混乱しています。

私は次のものを持っています:

public class NoteView
{
   public string Title { get; set; }
   public string b { get; set; }
   public string c { get; set; }
}

その後:

List<NoteView> notes = new List<NoteView>();

protected void Button1_Click(object sender, RoutedEventArgs e)
{
   notes.Add(new NoteView {
      a = "text one",
      b = "whatevs",
      c = "yawns"
   });

   NotesList.ItemsSource = notes;
}

これは役に立たない。何もしません。また、出力ウィンドウには何も表示されません。エラーも例外もありません。なし。

そこで、リストボックスに直接追加してみました。

NotesList.Items.Add("whatever!");

繰り返しますが、何も起こりませんでした。それで私は追加しようとしましUpdateLayout();たが、それも役に立ちませんでした。

誰もがそれで何が起こっているのか知っていますか?

XAMLリストボックスに新しいアイテムを追加するにはどうすればよいですか?

アップデート:

        <ListBox Name="NotesList" Background="WhiteSmoke">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Title, Mode=TwoWay}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
4

3 に答える 3

1

あなたはそれを少し違ったやり方でしなければならないでしょう、あなたはただすべてのプロパティをlistBoxに割り当てることはできません。したがって、この種のクラスを作成します。

 public class NoteView
{
    public string Item { get; set; }
    public int Value { get; set; }
}

そして、これはボタンクリックイベント内のコードです:

        List<NoteView> notes = new List<NoteView>();
        notes.Add(new NoteView { Item = "a", Value = 1 });
        notes.Add(new NoteView { Item = "b", Value = 2 });
        notes.Add(new NoteView { Item = "c", Value = 3 });

        listBox1.DataSource = notes;
        listBox1.DisplayMember = "Item";
        listBox1.ValueMember = "Value";

--それ以外の場合、作成したものと同じクラスを使用する場合は、次のように実行できます。

        List<NoteView> notes = new List<NoteView>();
        notes.Add(new NoteView
        {
            a = "text one",
            b = "whatevs",
            c = "yawns"
        });

        listBox1.Items.Add(notes[0].a);
        listBox1.Items.Add(notes[0].b);
        listBox1.Items.Add(notes[0].c);
于 2012-09-17T16:59:49.757 に答える
0
List<NoteView> notes = new List<NoteView>();

protected void Button1_Click(object sender, RoutedEventArgs e)
{
   notes.Add(new NoteView {
      a = "text one",
      b = "whatevs",
      c = "yawns"
   });
NotesList.DisplayMember = "a";
        NotesList.ValueMember = "b";
   NotesList.ItemsSource = notes;
}
于 2012-09-17T17:11:14.227 に答える
0

私はそれを行う方法を理解することができました:

notes.Insert(0, new NoteView { a = "Untitled note", b = "", c = "" });

于 2012-09-17T17:23:24.910 に答える