元素总是向模型返回null

时间:2019-02-11 10:44:14

标签: c# xamarin xamarin.forms xamarin.android

我正在与Xamarin一起构建应用程序,当前我正在使用多选项卡页面。我正在Android上对此进行测试。

每次我创建一个元素并尝试在模型中查看该对象时,该对象的值为null。

我有一个选择器,其定义如下:

<Picker Margin="10,0,10,0" x:Name="drawingToolsPicker" Title="Select a Drawing Tool" SelectedIndexChanged="drawingToolChanged">
    <Picker.Items>
        <x:String>Polygon</x:String>
        <x:String>Text</x:String>
    </Picker.Items>
</Picker>

在我的模型代码中,我尝试使用“ drawingToolsPicker”对象访问此对象。但是它总是返回null,访问该对象的代码如下:

 public void drawingToolChanged(object sender, EventArgs e)
 {

 System.Console.WriteLine((string)drawingToolsPicker.SelectedItem);
        //Always returns null, if I add a null check guard it won't reach this ever.

        if ((string)drawingToolsPicker.SelectedItem == "Polygon")
        {
            paint.Style = SKPaintStyle.Stroke;
            paint.Color = SKColors.Red;
            paint.StrokeWidth = 5;
        }
 }

发生这种情况有什么原因吗?

1 个答案:

答案 0 :(得分:0)

我的直觉是,它无法正常工作的原因是您使用Items属性将数据填充到选择器中,我建议您使用ItemsSource方法(推荐)。

如果您选中Xamarin Picker documents

  

有两种使用数据填充选择器的技术:

     

将ItemsSource属性设置为要显示的数据。这是推荐的技术,它是Xamarin.Forms 2.3.4中引入的。有关更多信息,请参见设置选取器的ItemsSource属性。

     

将要显示的数据添加到Items集合中。这项技术是使用数据填充Picker的原始过程。有关更多信息,请参见将数据添加到选择器的项目集合。

然后将字符串列表添加到您的选择器中,如下所示:

drawingToolsPicker.ItemsSource= new string[] { "Polygon", "Text" };