【问题标题】:windows phone listboxwindows phone 列表框
【发布时间】:2012-02-15 15:50:26
【问题描述】:

1) 这是我的 listbox2 selectionchanged 代码

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”和“degree”被添加到 listbox2

5)在此之后,当我单击 listbox2 的“弧度”时,“弧度值不会加载到 textblock4 中,它会在“lbi.Content.ToString()”中给出“NullReferenceException”

6) 如何修改我的代码,以便在运行时将“弧度”值加载到 textblock4 中,并且生成的新项目将在 listbox2 中被选中

【问题讨论】:

  • 您已经提供了可以工作的部分的代码,完全泄露了有问题的部分的代码。您应该做的是包含 textblock4 相关代码。请这样做,您很可能会获得更多帮助。
  • 我已经提供了必要的代码,它给出了运行时异常,因为 listbox2 完全为空,需要在运行时填充
  • 如何在从 listbox2 中选择“radian”时将运行时值“radian”动态加载到 textblock4 中?

标签: windows-phone-7 listbox


【解决方案1】:

通过以下方式调整后在调试器中运行您的代码:

你有 textBlock4.Text = lbi.Content.ToString(); 的地方替换为:

object lbiContent  = lbi.Content;

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

在对象线处放置一个断点。这样您就可以知道您的 listboxitem 的内容究竟是什么,以及它是否为空。

很可能你只是在

中放错了东西
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;

你不需要做双重演员。

并且列表框的 Selected 项可能仍为空。

更新 2:

这很可能是您检索所选项目的方式:

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

【讨论】:

  • 在运行时仍然给出 NUllReferenceException
  • listBox2.Items.Clear(); listBox2.Items.Add("弧度"); listBox2.Items.Add("度数");这些是我想在运行时在 listbox2 n 中添加的项目,然后单击“弧度”,然后在 textBlock4 中输入“弧度”
  • 不,我在“lbiContent.ToString();”运行时遇到 NUllRefernceException;
  • 不抱歉,我在对象 lbiContent="lbi.Content" 的运行时遇到 NUllRefernceException;现在有了@Maxim 发布的答案
  • 在“ibi.Content”处出现异常;
猜你喜欢
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多