0

myListBoxに Binding を設定しObservableCollectionます。アイテムは問題なく追加されListBoxますが、最初のアイテムを選択したいときListBoxInvalidOperationException...

コード:

private void PopulateDateListbox()
{
    // clear listbox
    DateList.Clear();

    // get days in month
    int days = DateTime.DaysInMonth(currentyear, currentmonth);

    // new datetime
    DateTime dt = new DateTime(currentyear, currentmonth, currentday);

    for (int i = 0; i < (days-currentday+1); i++)
    {
        // create new dataitem
        DateItem di = new DateItem();
        di.dayint = dt.AddDays(i).Day.ToString(); // day number
        di.day = dt.AddDays(i).DayOfWeek.ToString().Substring(0, 3).ToUpper(); // day string
        di.monthint = dt.AddDays(i).Month.ToString(); // month number
        di.yearint = dt.AddDays(i).Year.ToString(); // year number

        // add dateitem to view
        Dispatcher.BeginInvoke(() => DateList.Add(di));
    }

    // select first item in Listbox
    datelistbox.SelectedIndex = 0; // <= InvalidOperationException
}

私も試しました:

datelistbox.SelectedItem = datelistbox.Items.First();

どちらも機能せず、理由がわかりませんか?

4

2 に答える 2

1

ディスパッチャーを使用して新しいアイテムを追加するのと同じ方法で、選択したアイテムを変更します。

Dispatcher.BeginInvoke(() => datelistbox.SelectedIndex = 0);
于 2013-08-19T12:32:20.857 に答える