Я пытаюсь изменить ImageSource ImageBrush, когда пользователь меняет тему своего телефона в своих настройках.
Итак, в настоящее время у меня есть это:
XAML:
<ImageBrush ImageSource="{Binding ImageSource, Mode=OneTime}" Stretch="UniformToFill"/>
Код позади:
public string ImageSource
{
get
{
if ((Visibility)App.Current.Resources["PhoneDarkThemeVisibility"]
== Visibility.Visible)
{
return "/Images/BGDark.png";
}
else
{
return "/Images/BG.png";
}
}
private set { }
}
Как видите, я устанавливаю фон при запуске приложения. Приложение установит фон, увидев, какая тема была выбрана.
Моя проблема теперь в том, что когда пользователь переходит в настройки (приложение не было закрыто!) И меняет тему, Background / ImageSource не обновляется, когда он активирует страницу приложения. Я подумал, что, возможно, я смогу изменить его, установив здесь новый Фон:
App.xaml.cs:
private void Application_Activated(object sender, ActivatedEventArgs e)
{
//access somehow the CodeBehind of my MainPage and change the ImageSource
}
Но я не знаю, как мне получить доступ к свойству ... Может быть, есть другое решение для изменения фона, пока приложение все еще работает, а пользователь меняет тему?
2 ответа
Попробуй это:
Класс модели:
class SampleClass
{
public string ImageSource
{
get
{
if ((Visibility)App.Current.Resources["PhoneDarkThemeVisibility"] == Visibility.Visible)
{
return "Dark";//You can set your Image here
}
else
{
return "Light";//You can set your Image here
}
}
private set { }
}
}
Применение :
private void Application_Activated(object sender, ActivatedEventArgs e)
{
SampleClass obj = new SampleClass();
Debug.WriteLine(obj.ImageSource);
}
ПРИМЕЧАНИЕ.
Вам необходимо отметить надгробие при деактивации во время отладки , как показано на рисунке. После этого он будет работать так же, как вы должны сделать
Вы можете попробовать поместить логику на Page .OnNavigatedTo () вместо Application_Activated()
:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
//do some logic to check if changing Background is necessary
//if it is then change the Background, else simply return;
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.