我正在与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;
}
}
发生这种情况有什么原因吗?
答案 0 :(得分:0)
我的直觉是,它无法正常工作的原因是您使用Items属性将数据填充到选择器中,我建议您使用ItemsSource方法(推荐)。
如果您选中Xamarin Picker documents:
有两种使用数据填充选择器的技术:
将ItemsSource属性设置为要显示的数据。这是推荐的技术,它是Xamarin.Forms 2.3.4中引入的。有关更多信息,请参见设置选取器的ItemsSource属性。
将要显示的数据添加到Items集合中。这项技术是使用数据填充Picker的原始过程。有关更多信息,请参见将数据添加到选择器的项目集合。
然后将字符串列表添加到您的选择器中,如下所示:
drawingToolsPicker.ItemsSource= new string[] { "Polygon", "Text" };