WPF / C#,如何从另一个窗口改变主窗口的背景颜色?

zsohkypk  于 2022-11-18  发布在  C#
关注(0)|答案(3)|浏览(150)

我写了一个WPF程序,我想在其中使用设置窗口*更改主窗口的背景色。项目要求:1-设置窗口应该能够将颜色保存在变量中,并在再次打开设置窗口时再次显示这些颜色。2-主窗口的背景颜色应该与设置窗口中的颜色完全绑定,当进行更改时将立即应用。
My WPF Project
我尝试了几种方法,包括:1-我在主窗口后面的代码中定义了LinearGradientBrush类型的全局变量。2-我在app.xaml文件中定义了LinearGradientBrush类型的全局变量。
但这些方法都没有正常工作

qoefvg9y

qoefvg9y1#

1.你基本上必须定义一个画笔资源。这个例子将在 * App.xaml * 中定义这个资源。
将其命名为“主窗口背景刷”:

<ResourceDictionary>
  <SolidColorBrush x:Key="MainWindowBackgroudBrush"
                   Color="Orange" />
</ResourceDictionary>

1.使用DynamicResource从您的MainWindow(或一般而言,应该具有动态背景的Control)指涉此资源。DynamicResource表示指涉的资源预期会在执行阶段变更(也就是资源是动态的):

<Window Background="{DynamicResource MainWindowBackgroudBrush}">
</Window>

1.然后使用静态Application.Current属性从任意位置修改画笔资源,例如从SettingsWindow修改画笔资源:

Application.Current.Resources["MainWindowBackgroudBrush"] = Brushes.Red;
qgelzfjb

qgelzfjb2#

你为什么不:
1 -打开设置
2 -当你关闭你的设置(使2按钮SaveCancel),这保存所有的参数(我猜现在你问颜色,但会有很多参数)。
3 -然后在主窗口中,您将看到:

private void OpenSettings_Click(object sender, RoutedEventArgs e)
  {
       MySettings newWindow = new MySettings();
       if (newWindow.ShowDialog() == true)//set this.DialogResult=true in your Settings window.
       {
           this.updateAllParameters();
       }
  }

updateParameters()只是一个函数,它将检查所有参数(如backgroundcolor),然后更新它们。

tktrz96b

tktrz96b3#

在visual studio中,转到“属性”窗口。导航到“设置”,添加一个color类型的参数,并给予其命名为yourColor。如果更改了颜色,请将其存储在设置文件中:

properties.settings.default.yourColor = newBackgroundColor;
properties.settings.default.save();

当你启动你的窗口时,查看你的属性并将其作为背景。

this.background = properties.settings.default.yourColor;

(伪代码无法编译)

相关问题