Xamarin.Forms:Error指定的强制转换在使用选取器时无效



我以为我已经解决了这个问题,但它似乎不再工作了。我有一个像这样的选择器:

<StackLayout Padding="15">
<Label Text="Choose a Victory"
FontSize="Subtitle"
FontAttributes="Bold"
TextColor="{StaticResource TitleFontColour}"
FontFamily="{StaticResource MontSerrat}"/>
<Picker x:Name="quickPicker" 
Title="- Select -"
TitleColor="White"
HorizontalOptions="FillAndExpand"
TextColor="#8759D7"
FontFamily="{StaticResource MontSerrat}"
ItemDisplayBinding="{Binding Desc}"
SelectedItem="{Binding SelectedDesc}">
</Picker>
</StackLayout>

拾取器基于:

public Task<List<QuickVictories>> GetQuickVictoriesAsync()
{
return _database.Table<QuickVictories>().OrderByDescending(x => x.DisplaySeq).ToListAsync();
}

我的型号是:

主要型号.cs

public class QuickVictories
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[MaxLength (140)]
public string Desc { get; set; }
[AutoIncrement]
public int DisplaySeq { get; set; }
}

AddVictory.xaml.cs 背后的我的看法

protected override async void OnAppearing()
{
base.OnAppearing();
quickPicker.ItemsSource = await App.Database.GetQuickVictoriesAsync();
}
async void OnSaveButtonClicked(object sender, EventArgs e)
{
var selectedQuickVictory = quickPicker.SelectedItem as QuickVictories;
var quickVictory = selectedQuickVictory.Desc;
var victory = new TheVictory()
{
Title = title.Text ?? quickVictory ?? "No title",
Quick = quickVictory ?? "N/A",
Details = details.Text ?? "No details were entered.",
Date = DateTime.UtcNow
};
await App.Database.SaveVictoryAsync(victory);
await DisplayAlert(
"You have just celebrated a Victory!",
"Your Victory has been saved for future celebrations.",
"Woohoo!"
);
await Navigation.PopAsync();
}

每当我尝试使用OnSaveButtonClicked进行保存时,我都会在这一行收到错误:var quickVictory = selectedQuickVictory.Desc;

这种方法目前正在我的生产版应用程序上运行,该应用程序在Google Play商店中运行,所以我很困惑为什么这种方法不再有效。

有人知道我可以在哪里尝试解决这个问题吗,因为我刚刚没有想法。

需要明确的是,我的目标是从QuickVictories模型中获得Desc。我已经尝试过将对象强制转换为字符串,但似乎不起作用,因为移动到选择器是sqlite查询的返回。

编辑:

上传SelectedItem调试的图片。

所选项目调试菜单

您需要检查SelectedItem是否为空

if (picker.SelectedItem == null)

并向用户显示一条消息,或者任何适合您的用例的消息

最新更新