私は次の問題があります.Windows Phone 7アプリケーションを作成していて、ObservableCollectionにバインドされているListBoxを使用しています。これは次のように実装されています。Wp7 ListBox ItemSource ObservableCollection IndexOutofRangeとItemsが更新されない
public class Person
{
private string _id { get; set; }
private string _name { get; set; }
public Person(string Id, string Name, string Title)
{
_id = Id;
_name = Name;
}
public string Id
{
get { return _id; }
set
{
_id = value;
FirePropertyChangedEvent("Id");
}
}
public string Name
{
get { return _name; }
set
{
_name = value;
FirePropertyChangedEvent("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void FirePropertyChangedEvent(string propertyName)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
人物コレクションはPersonオブジェクトで埋められています。それらは次の関数で作成されます... listValuesはListBoxです。
void svc_GetHierachyCompleted(object sender, HCMobileSvc.GetHierachyCompletedEventArgs e)
{
var data = e.Result.ToArray();
listValues.ItemsSource = null;
people.Clear();
int i = 0;
foreach(var item in data)
{
if (i == 0)
{
// Manager
mgrField1.Text = item[1].ToString();
mgrField2.Text = item[2].ToString();
i++;
}
else
{
// Untergebenen hinzufügen
people.Add(new Person(item[0].ToString(), item[1].ToString(), item[2].ToString()));
}
}
// Update List
listValues.ItemsSource = people;
}
私はDataTemplateを持っており、2つのtextblocksがプロパティIdとNameの両方にバインドされています。 SelectionChangedイベントが発生したときに、私は次のコードを使用して(私は上記もう一度関数を呼び出す)、リスト全体を再構築しよう:
string id = people[listValues.SelectedIndex].Id;
MessageBox.Show(id);
CreateHierachy(id);
CreateHierachyはちょうどだけにして、上記の方法に入るWebサービスを照会します。
ArgumentOutOfRangeException {"\r\nParameter name: index"}
エラーがラインlistValues.SelectedIndexによって引き起こされる:問題は、私は、私は次のエラーを取得するリストボックスで値を選択するや否や、です。 なぜそれが起こるのか全く分かりません。私が知っているのは、MessageBoxが私に正しいSelectedIndex値を示しているということです。私も知っているのは、私が行のpeople.Clear()を削除するとエラーが消え去るが、ListBoxは更新されないということだ。
問題が発生している可能性のある候補はありますか?
ありがとうございました!
さようなら、 WorldSignia
あなたのXAML –