Windows Phone ListPicker选择了不带数据绑定的项
本文关键字:数据绑定 Phone ListPicker 选择 Windows | 更新日期: 2023-09-27 18:28:23
我在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"上也是如此
作为一个新手,我对数据绑定并不完全了解,如果这是我应该做的,请告诉我,但我认为我可以在没有它的情况下进行管理(此外,我对它的能力还不确定)。任何东西都非常感谢!我几乎读过我能找到的每一篇文章。
试试这个
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模式,它将比在代码后面做所有事情更干净、更简单。:)