Windows Phone ListPicker selectedItem没有数据绑定

时间:2013-08-19 17:49:46

标签: c# xaml windows-phone listpicker

我在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”上也是如此。

代表新事物,我对数据绑定并不完全了解,如果这就是我应该做的事情就让我知道,但我想我可以在没有它的情况下进行管理(另外我对它的内容不太了解能够)。 任何事都非常感谢!我已经阅读了我能找到的每篇文章。

1 个答案:

答案 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模式,它将更清洁,更简单,而不是做代码背后的一切。 :)