список телефонов Windows - PullRequest
1 голос
/ 21 января 2012

1) Это мой код для выбора из списка 2.

void PrintText2(object sender, SelectionChangedEventArgs args)
{
   if (null != listBox2.SelectedItem)
   {
      ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem);
      textBlock4.Text = lbi.Content.ToString();
   }
}

2) Это мой код для listbox1, выбранный

void PrintText1(object sender, SelectionChangedEventArgs args)
{  
   if (null != listBox1.SelectedItem)
   {
      ListBoxItem l = ((sender as ListBox).SelectedItem as ListBoxItem);
      textBlock6.Text = l.Content.ToString();
      if (textBlock6.Text == "Angle")
      { 
         loadlistAngle(); 
      }
   }
}

3)

void  loadlistAngle()
{            
   listBox2.Items.Clear(); 
   listBox2.Items.Add("Radian");
   listBox2.Items.Add("Degree");
}

4) listbox1 содержит статический элемент «Angle», и при выборе «Angle» во время выполнения Angle загружается в textBolck6, а затем новые элементы «radian» и «deg» добавляются в listbox2

5) после этого, когда я нажимаю «радиан» в listbox2, «значение радиана не загружается в textblock4, оно выдает« NullReferenceException »в« lbi.Content.ToString () »

6) как мне изменить мой код так, чтобы во время выполнения значение «радиан» загружалось в textblock4, а новые сгенерированные элементы выбирались в listbox2

1 Ответ

1 голос
/ 21 января 2012

Запустите ваш код в отладчике после настройки следующим образом:

Там, где у вас есть textBlock4.Text = lbi.Content.ToString();, замените его на:

object lbiContent  = lbi.Content;

if(lbiContent != null) textBlock4.Text = lbiContent.ToString();

Установите точку останова на линии объекта.Таким образом, вы будете знать, что именно является содержимым вашего списка, и если оно равно нулю.

Скорее всего, вы просто помещаете что-то не так в

listBox2.Items.Clear(); 
listBox2.Items.Add("Radian");
listBox2.Items.Add("Degree");

В остальном все этоисправьте код, который вы указали.

Обновление:

Также попробуйте заменить

ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem);

на

ListBoxItem lbi = ((sender as ListBox).SelectedItem;

Вам не нужносделать двойное приведение.

И выбранный элемент списка может все еще быть пустым.

Обновление 2:

Скорее всего, это будет то, как вы извлекаете выбранный элемент:

ListBoxItem lbi = (args.AddedItems [0] as ListBoxItem);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...