我在windows phone 8应用程序中有一个listPicker,并想知道我在c#中收集当前选中的项目时做错了什么。
这是listPicker的XAML。
<toolkit:ListPicker x:Name="brewMethodList" HorizontalAlignment="Left" Margin="-2,24,0,0" VerticalAlignment="Top" Height="127" Width="164" BorderBrush="#FF162E3E" Foreground="Black" SelectionChanged="brewMethodSelectionChange" LostFocus="quantityInputLostFocus" Background="#FF5C97BF" >
<toolkit:ListPickerItem x:Name="manual_list" Content="Manual" Background="#FF5C97BF"/>
<toolkit:ListPickerItem x:Name="autoDrip_list" Content="Auto Drip" Background="#FF5C97BF"/>
</toolkit:ListPicker>
这是c#试图访问当前选择的项目。
private void brewMethodSelectionChange(object sender, SelectionChangedEventArgs e)
{
if (brewMethodList.SelectedItem == manual_list)
{
brewMethod = MANUAL;
}
else
{
brewMethod = AUTO_DRIP;
}
update();
}
这只是一个简化版本,但它抛出'System.NullReferenceException',如果我将鼠标悬停在“brewMethodList”上,则表示null,将鼠标悬停在“manual_list”上也是如此。
代表新事物,我对数据绑定并不完全了解,如果这就是我应该做的事情就让我知道,但我想我可以在没有它的情况下进行管理(另外我对它的内容不太了解能够)。 任何事都非常感谢!我已经阅读了我能找到的每篇文章。
答案 0 :(得分:0)
试试这个
private void brewMethodSelectionChange(object sender, SelectionChangedEventArgs e)
{
var brewMethodList = sender as ListPicker;
if (brewMethodList.SelectedItem == manual_list)
{
brewMethod = MANUAL;
}
else
{
brewMethod = AUTO_DRIP;
}
update();
}
但是,如果你使用MVVM模式会更好。这个链接应该是一个很好的参考,http://msdn.microsoft.com/en-us/magazine/hh852595.aspx
编辑:如果你不检查控件的名称也更好,一旦你实现MVVM模式,它将更清洁,更简单,而不是做代码背后的一切。 :)