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"上也是如此

作为一个新手,我对数据绑定并不完全了解,如果这是我应该做的,请告诉我,但我认为我可以在没有它的情况下进行管理(此外,我对它的能力还不确定)。任何东西都非常感谢!我几乎读过我能找到的每一篇文章。

Windows Phone ListPicker选择了不带数据绑定的项

试试这个

    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模式,它将比在代码后面做所有事情更干净、更简单。:)