0

我在 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”上,它会显示为空,将鼠标悬停在“manual_list”上也是如此。

代表新人,我对数据绑定并不完全了解,如果那是我应该做的事情,请告诉我,但我认为没有它我可以管理(而且我不知道它的能力) . 任何事情都非常感谢!我已经阅读了几乎所有我能找到的文章。

4

1 回答 1

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 模式,它会更干净和更简单,而不是在代码后面做所有事情。:)

于 2013-08-19T19:16:47.453 回答