我很难将Color从ColorPicker传递到另一张纸上。 我试图将Brush存储为变量,以便我可以将此变量传递到另一张纸上。 正如另一个人在我的上一篇文章中指出的那样,每次我离开页面时,都会从设置页面中清除数据,因此,“ MainPage”无法检索画笔。
UseCase : 每当我更改“设置页面”上的颜色时,该颜色都应反映在我的主页上。
我完全不确定如何实现此功能,有关此文档的文档主要仅用于本地使用。
我在Settings_Page.xaml中的ColorChange上具有以下事件触发器:
private void TextColourPicker_ColorChanged(ColorPicker sender, ColorChangedEventArgs args)
{
}
我当时正在考虑做某件事,就像我不得不处理其中一个GlobalVariables。这涉及一个GlobalVariables_PropertyChanged事件。颜色事件似乎有所不同。
我在GlobalVariableStorage类中创建了一个静态类,如下所示:
public static class ColourSelections
{
private static Brush _TextColour;
public static Brush TextColour
{
get { return _TextColour; }
set { _TextColour = value; NotifyPropertyChanged(); }
}
我不知道这是对的还是对您有帮助。
我希望将选定的颜色分配给GlobalVariables文本颜色笔刷。 如果有人对此有更好的执行方法,请告诉我。
我正在尝试以MVVM方法工作,但是在学习时会调整代码。
我为自己的含糊和缺乏理解而道歉。在工作表之间传递画笔信息对我来说是新手,我只是不确定如何处理它。
编辑:
我添加了以下内容。
在我的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变量读回Mainpage。问题是,我要更改的是NavigationViewItem“前景”颜色。
答案 0 :(得分:1)
您可以使用 static 类以正确的方式进行操作,只要更改颜色,就可以将新颜色的值分配给静态类中的变量,并在上读取MainPage 只需覆盖MainPage上的 OnNavigatedTo 方法,然后为其中的每个 NavigationViewItems 分配颜色值即可。
protected override void OnNavigatedTo(object sender, object args)
{
if(ColourSelections.TextColor != null)
{
//considering NavigationItem1 is the x:Name of your first NavigtionViewItem.
NavigationItem1.Foreground = ColourSelections.TextColor;
}
}
注意:确保TextColor的类型为 SolidColorBrush ,因为这也是前景的类型。