繁体   English   中英

UWP / C#问题,将ColorPicker选择传递给变量

[英]UWP/C# Issue passing a ColorPicker selection into a variable

我在将颜色从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“前景”颜色。

您可以使用静态类以正确的方式进行操作,只要更改颜色,就可以将新颜色的值分配给静态类中的变量,并在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,因为这也是前景的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM