c# - 将 ColorPicker 选择传递到变量中的 UWP/C# 问题
问题描述
我很难将 ColorPicker 中的颜色传递到另一张纸上。我试图将画笔存储为变量,以便我可以将此变量传递到另一张表中。正如另一个人在我上一篇文章中指出的那样,每次我离开页面时,数据都会从设置页面中清除,因此我的“MainPage”无法检索画笔。
用例:每当我更改设置页面上的颜色时,都应该反映在我的主页上。
我根本不知道如何实现这一点,这方面的文档主要是为了在本地使用它。
我在 thge 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 变量读回主页。问题是,我试图改变的是 NavigationViewItem “前景”颜色。
解决方案
您正在使用静态类以正确的方式进行操作,每当颜色更改时,您都可以将新颜色的值分配给静态类中的变量并在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,因为这也是 Foreground 的类型。
推荐阅读
- bash - 删除特定时间范围内的文件
- sql - 哪个员工处理的订单最多?
- c++ - 无序映射中的用户定义类
- c# - C# 短 if 语句,如果为真则执行函数
- java - 将 xml dom 解析为对象
- php - 寻找有关为什么我无法连接数据库 Codeigniter 4 的更多信息
- python - 替换pytest中的文本生成器,处理动态生成的测试值
- swift - SwiftUI - 添加的按钮具有自动大写的文本,并且可以在整个视图中点击
- xaml - Xamarin Form Shell:Flyout v/s TabBar
- python - 当用作 Google Cloud Function 时,有没有办法在 scrapy 脚本中轮换 IP 地址或更改代理?