我试图在 UWP 应用程序中更改 Theme/HighContrast 更改的图像。我点击了链接:定制资源 但是当我在应用程序运行时更改主题时它不起作用。它在应用程序重新启动后工作。我同时遵循了文件夹名称限定符和文件名限定符。我需要做任何额外的改变吗?谁能帮帮我吗?
问问题
59 次
1 回答
0
但是当我在应用程序运行时更改主题时它不起作用。它在应用程序重新启动后工作。
它是设计使然,源自官方文档,我们需要监听系统对比度主题更改时将调用的MapChanged事件。并手动修改图像源。
例如 :
public MainPage()
{
this.InitializeComponent();
var qualifierValues = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
qualifierValues.MapChanged += new Windows.Foundation.Collections.MapChangedEventHandler<string, string>(QualifierValues_MapChanged);
}
private async void QualifierValues_MapChanged(IObservableMap<string, string> sender, IMapChangedEventArgs<string> @event)
{
var dispatcher = this.MyImage.Dispatcher;
if (dispatcher.HasThreadAccess)
{
this.RefreshUIImages();
}
else
{
await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => this.RefreshUIImages());
}
}
private void RefreshUIImages()
{
var namedResource = Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap[@"Files/Assets/Images/logo.jpg"];
this.MyImage.Source = new Windows.UI.Xaml.Media.Imaging.BitmapImage(namedResource.Uri);
}
于 2020-07-13T05:43:40.440 回答