【发布时间】:2020-11-16 01:41:11
【问题描述】:
谁能告诉我为什么 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}");
}
}
}
}
非常感谢
【问题讨论】: