c# - IMapChangedEventArgs始终为空,面向 Windows 10,版本 2004
问题描述
谁能告诉我为什么 IMapChangedEventArgs 值在针对 Windows 10 版本 2004(10.0;Build 19041)的 C# UWP 应用程序中总是返回 null?
我正在尝试使用具有此签名的处理程序处理由 ApplicationDataContainerSettings 对象引发的 MapChanged 事件
SettingsMapChanged(IObservableMap<string, object> sender, IMapChangedEventArgs<string> @event)
以下代码的调试输出为:
[One] = One
Null argument
Empty Map
Null argument
Empty Map
Null argument
[Two] = Two
这表明sender正确返回了对更新地图的引用,但 MapChangedEventArgs 值始终为空。我已经尝试过转换为 ApplicationDataContainerSettings 的替代方法,但没有成功。任何建议都会非常受欢迎。
和这里:
using System.Diagnostics;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Xaml.Controls;
namespace AppDataTest
{
public sealed partial class MainPage : Page
{
const string ContainerName = "Settings";
const string Key1 = "One";
const string Key2 = "Two";
ApplicationDataContainerSettings Settings;
public MainPage()
{
this.InitializeComponent();
ApplicationDataContainer userSettings = ApplicationData.Current.LocalSettings.CreateContainer(ContainerName, ApplicationDataCreateDisposition.Always);
Settings = (ApplicationDataContainerSettings)userSettings.Values;
Settings.Clear();
Settings.MapChanged += SettingsMapChanged;
Settings.Add(Key1, "One");
Settings.Clear();
Settings[Key2] = "Two";
}
private void SettingsMapChanged(IObservableMap<string, object> sender, IMapChangedEventArgs<string> @event)
{
if (@event == null)
{
Debug.WriteLine("Null argument");
}
else
{
Debug.WriteLine($"{@event.CollectionChange} : {@event.Key}");
}
Debug.WriteLineIf(sender.Count == 0, "Empty Map");
foreach (var item in sender)
{
Debug.WriteLine($"[{item.Key}] = {item.Value}");
}
}
}
}
非常感谢
解决方案
MapChanged 事件的定义是:
public event MapChangedEventHandler<string,object> MapChanged;
它的事件参数是object
type(不是IMapChangedEventArgs<string>
),根据测试,它总是返回null。
此方法旨在通知设置何时更改,但不包括特定的修改数据。
所以在这种情况下,需要根据sender
.
推荐阅读
- javascript - GetSafeHtmlFragment 仍然无法按预期停止 c# 中的跨站点脚本
- c++ - 试图避免在 for 循环中使用 if-else 语句,但代码似乎有一些错误
- c++ - 通过 void 向下转换/向上转换*
- vba - 在 Access 365 表单上使用 avicap32 进行网络摄像头捕获适用于单摄像头笔记本电脑(64 位),2 摄像头平板电脑(32 位)上的图片框中出现黑屏
- android - ConstrainLayout 不在 NestedScrollview 内滚动
- javascript - 我可以告诉有人在我的网站之前访问的最后一个网站吗?
- authentication - 实现应用认证的准确方法是什么
- python - 如何控制免费高级 twitter api 的速率限制
- image - 使用 WSO2 EI 文件连接器无法查看下载的图像
- amazon-web-services - 使用 X 射线跟踪 AWS 中的公共服务