Xamarin/XAML/C# - 如何设置我的 App.Current.Properties 字典?
Posted
技术标签:
【中文标题】Xamarin/XAML/C# - 如何设置我的 App.Current.Properties 字典?【英文标题】:Xamarin/XAML/C# - How do I set up my App.Current.Properties dictionary? 【发布时间】:2021-12-09 01:21:00 【问题描述】:问题:我正在编写一个计算假期天数的应用程序。在应用程序启动时,系统会提示用户输入他们的休假天数,并将其存储在名为 LeaveDays 的静态字符串中。重新安装我的应用程序后,我意识到 LeaveDays 变量被重置。好的,所以我需要正确保存这些数据。我发现人们经常使用 Application.Current.Properties 选项,因此我没有将 LeaveDays 变量分配给提示条目的值,而是将其分配给 Application.Current.Properties["LeaveDays"] 键。
现在我的问题是我在任何地方都没有设置密钥并且我得到了 KeyNotFoundException。我认为它应该在主 App 文件中设置,但我不想用任何值实例化它。该值需要来自提示。我确定我只是误读了有关此文档的文档,但我不确定应该如何设置属性字典以及它如何与手动输入一起使用。
下面是我的弹出窗口的代码。非常感谢任何帮助:
async void SetLeaveDaysPopup()
VersionTracking.Track();
var firstLaunch = VersionTracking.IsFirstLaunchEver;
if (firstLaunch == true || ChangeLeaveDaysButton.IsEnabled == true)
Application.Current.Properties["LeaveDays"] = await DisplayPromptAsync("Set Leave Days", "Please set the amount of total leave days you have");
EntitlementDaysText.Text = Application.Current.Properties["LeaveDays"] as string;
calculateLeaveHours(EntitlementDaysText.Text);
【问题讨论】:
您设置了两次属性,一次使用DisplayPrompt
,一次使用EntitlementDaysText.Text
的值。这样做的目的是什么?
抱歉,现已更正。目的是用这个提示属性设置一个字段的文本属性。
你的代码有什么问题?乍一看,它似乎应该可以工作。
在应用程序加载时,我收到一个 KeyNotFound 异常:'字典中不存在给定的键 'LeaveDays'。我需要在其他地方实例化它吗?
为什么您的帖子中没有包含非常相关的信息?首先,您需要调用SaveProperties()
以确保它们被持久化到磁盘。其次,您应该在尝试访问之前检查密钥是否存在。
【参考方案1】:
在 Jason 的帮助下修复了代码:
async void SetLeaveDaysPopup()
VersionTracking.Track();
var firstLaunch = VersionTracking.IsFirstLaunchEver;
if (firstLaunch == true || ChangeLeaveDaysButton.IsEnabled == true)
Application.Current.Properties["LeaveDays"] = await DisplayPromptAsync("Set Leave Days", "Please set the amount of total leave days you have");
await Application.Current.SavePropertiesAsync();
if (Application.Current.Properties.ContainsKey("LeaveDays"))
EntitlementDaysText.Text = Application.Current.Properties["LeaveDays"] as string;
calculateLeaveHours(EntitlementDaysText.Text);
【讨论】:
以上是关于Xamarin/XAML/C# - 如何设置我的 App.Current.Properties 字典?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的应用中将 Google 语音输入设置为默认文本输入?