У меня проблемы с передачей цвета из ColorPicker на другой лист.
Я пытаюсь сохранить Brush как переменную, чтобы я мог передать эту переменную на другой лист.
Как отметил другой человек в моем последнем сообщении, каждый раз, когда я ухожу со страницы, данные удаляются со страницы настроек, и, таким образом, моя «MainPage» не может извлечь кисть.
UseCase :
Всякий раз, когда я меняю цвет на странице настроек, это должно отражаться на моей главной странице.
Я вообще не уверен, как это реализовать, и документация по этому вопросу в основном предназначена только для локального использования.
У меня есть следующий триггер на ColorChange в thge Settings_Page.xaml:
private void TextColourPicker_ColorChanged(ColorPicker sender, ColorChangedEventArgs args)
{
}
Я думал о том, чтобы сделать что-то похожее на одно из моих глобальных переменных. Это включало событие GlobalVariables_PropertyChanged. Событие Color кажется другим.
Я создал статический класс в своем классе GlobalVariableStorage следующим образом:
public static class ColourSelections
{
private static Brush _TextColour;
public static Brush TextColour
{
get { return _TextColour; }
set { _TextColour = value; NotifyPropertyChanged(); }
}
Я понятия не имею, правильно ли это или помогает ли это вообще.
Я надеялся назначить выбранный цвет кисти цвета текста GlobalVariables.
Если у кого-то есть более эффективные методы выполнения, пожалуйста, дайте мне знать.
Я пытаюсь работать в режиме MVVM, но корректирую свой код по мере того, как иду и учусь.
Я прошу прощения за мою неопределенность и отсутствие понимания. Передача информации о кистях между листами является новой для меня, и я просто не знаю, как к ней подойти.
Edit:
Я добавил следующее.
На моем Settings_Page.xaml.cs:
private void TextColourPicker_ColorChanged(ColorPicker sender, ColorChangedEventArgs args)
{
SolidColorBrush TextColorBrush = new SolidColorBrush(TextColourPicker.Color);
ColourSelections.TextColour = TextColorBrush;
}
Это записывает в следующий класс в GlobalVariableStorage.cs:
public static class ColourSelections
{
private static Brush _TextColour;
public static Brush TextColour
{
get { return _TextColour; }
set { _TextColour = value; NotifyPropertyChanged(); }
}
public static event PropertyChangedEventHandler PropertyChanged;
private static void NotifyPropertyChanged([CallerMemberName]string propertyName = "") =>
PropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
}
Что мне теперь нужно сделать, это:
Считайте переменную TextColour обратно на главную страницу. Проблема в том, что я пытаюсь изменить это цвет NavigationViewItem "Foreground".