这对我有用。
我认为这是因为您在更改设置后没有重新打开您的视觉工作室。
更改设置后,它不会通知并强制已打开的 Visual Studio(或其他应用程序)更改其环境值。您必须关闭并重新打开您的 Visual Studio 才能让 Visual Studio 以新设置开始。
[更新]
我让它工作了,因为我认为您只想更改 ListSeparator 设置但没有更改 Region 格式。@user5596450 方向正确。所以你的问题的答案是否定的。您无法获取您在区域设置中指定的自定义区域格式。
实际上,自定义设置并非适用于所有设备系列。我相信目前的结果是有道理的。您所期望的应该由诸如 UWP 的桌面扩展之类的东西提供,而不是 .net 核心 API。您可以随时向 wpdev.uservoice.com 提出请求,Microsoft 正在那里听取开发人员的反馈。
作为替代方案,.Net 核心 API 将检查 UWP 应用程序的 PreferredLanguage 并为您获取相应的设置。例如,如果您Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "pt-br";
在 UWP 应用程序中调用(通常在 App.xaml.cs 中的 OnLaunched 事件中),您将得到您所期望的,但这不是您在区域设置中自定义的设置。这就是它应该如何适用于不同设备系列的通用应用程序。请查看ApplicationLanguages.PrimaryLanguageOverride MSDN 文档以了解它的实际作用。
仅供参考,UWP 使用的 .net 核心 API 中的 CurrentCulture 可以在github上找到。以下是它的实现方式:
public static CultureInfo CurrentCulture
{
get
{
Contract.Ensures(Contract.Result<CultureInfo>() != null);
#if !FEATURE_CORECLR
return Thread.CurrentThread.CurrentCulture;
#else
// In the case of CoreCLR, Thread.m_CurrentCulture and
// Thread.m_CurrentUICulture are thread static so as not to let
// CultureInfo objects leak across AppDomain boundaries. The
// fact that these fields are thread static introduces overhead
// in accessing them (through Thread.CurrentCulture). There is
// also overhead in accessing Thread.CurrentThread. In this
// case, we can avoid the overhead of Thread.CurrentThread
// because these fields are thread static, and so do not
// require a Thread instance to be accessed.
#if FEATURE_APPX
if(AppDomain.IsAppXModel()) {
CultureInfo culture = GetCultureInfoForUserPreferredLanguageInAppX();
if (culture != null)
return culture;
}
#endif
return Thread.m_CurrentCulture ??
s_DefaultThreadCurrentCulture ??
s_userDefaultCulture ??
UserDefaultCulture;
#endif
}
set
{
#if FEATURE_APPX
if (value == null) {
throw new ArgumentNullException("value");
}
if (AppDomain.IsAppXModel()) {
if (SetCultureInfoForUserPreferredLanguageInAppX(value)) {
// successfully set the culture, otherwise fallback to legacy path
return;
}
}
#endif
Thread.CurrentThread.CurrentCulture = value;
}
}