应用主题的最简单方法是什么
What is the simplest way to apply themeing
假设我有一个 ResourceDictionary:
更新:
<SolidColorBrush x:Key="AquaBrush" Color="#257D8E"/>
<SolidColorBrush x:Key="GreenBrush" Color="Green"/>
假设这是我的应用程序:
我有一个包含项目(浅绿色、绿色和灰色)的组合框 当我 select 浅绿色按钮时,它应该显示如下:
我要设置的按钮和其他控件也应该将其背景更新为浅绿色。
我如何才能将 SplitView 、 Button 和其他控件的背景绑定到一个 属性 并且当我 select "aqua" 时它将使用 "AquaBrush" 以及何时我select"Green",会用"GreenBrush"吗?
谢谢。
由于您在 XAML 中定义了 SolidColorBrush 资源,因此您可以从后台代码执行此操作,以便在运行时根据条件更改背景颜色:
if(Some Condition){
relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushBlue"];
}else {
relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushGreen"];
}
希望这对您有所帮助..!
编辑:
此外,您不仅可以定义自己的静态资源,还可以使用系统的theme resources .
例如,您可以像这样访问系统的强调色:
C#
var color = (Color)this.Resources["SystemAccentColor"];
Xaml
<Grid.Background>
<SolidColorBrush Color="{StaticResource SystemAccentColor}"/>
</Grid.Background>
编辑 2:
由于问题已更改并以更好的方式构建,很明显您想了解 Application wide Theme-ing 。
您可以通过多种方式获得应用程序范围的主题,所以这里是一个:
在你里面定义一个应用资源App.Xaml这样
通过您的应用程序可用。
现在这些资源将在所有 pages.You 中可用,可以像这样访问它们:
这样您将拥有应用程序范围的主题。
您还可以从隐藏代码访问应用程序资源:
gridName.Background=new SolidColorBrush((Color)Application.Current.Resources["ColorThree"]);
编辑 3 :
在你里面 app.xaml :
<ResourceDictionary>
<Color x:Key="ThemeColor">#f4425f</Color>
<SolidColorBrush x:Key="UserAccentBrush" Color="{StaticResource ThemeColor}"/>
</ResourceDictionary>
单击您的按钮只需更改 "UserAccentBrush" 的颜色,它将反映在所有使用画笔的控件中..
private void Button_Click(object sender, RoutedEventArgs e)
{
var brush = (SolidColorBrush)Application.Current.Resources["UserAccentBrush"];
if (cb.SelectedIndex != -1)
{
switch (cb.SelectedIndex)
{
case 0:
brush.Color = Color.FromArgb(255, 242, 101, 34);
break;
case 1:
brush.Color = Color.FromArgb(255, 232, 10, 90);
break;
}
}
}
请注意,我是直接使用application.current.resources,您可能需要稍微修改一下代码..
如果您需要保存此颜色并在用户下次打开应用程序时应用它,您需要将其保存到应用程序设置(或您可能正在维护的任何设置文件)并在应用程序加载时应用颜色更改代码..!
假设我有一个 ResourceDictionary:
更新:
<SolidColorBrush x:Key="AquaBrush" Color="#257D8E"/>
<SolidColorBrush x:Key="GreenBrush" Color="Green"/>
假设这是我的应用程序:
我有一个包含项目(浅绿色、绿色和灰色)的组合框 当我 select 浅绿色按钮时,它应该显示如下:
我如何才能将 SplitView 、 Button 和其他控件的背景绑定到一个 属性 并且当我 select "aqua" 时它将使用 "AquaBrush" 以及何时我select"Green",会用"GreenBrush"吗?
谢谢。
由于您在 XAML 中定义了 SolidColorBrush 资源,因此您可以从后台代码执行此操作,以便在运行时根据条件更改背景颜色:
if(Some Condition){
relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushBlue"];
}else {
relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushGreen"];
}
希望这对您有所帮助..!
编辑:
此外,您不仅可以定义自己的静态资源,还可以使用系统的theme resources .
例如,您可以像这样访问系统的强调色:
C#
var color = (Color)this.Resources["SystemAccentColor"];
Xaml
<Grid.Background>
<SolidColorBrush Color="{StaticResource SystemAccentColor}"/>
</Grid.Background>
编辑 2: 由于问题已更改并以更好的方式构建,很明显您想了解 Application wide Theme-ing 。 您可以通过多种方式获得应用程序范围的主题,所以这里是一个:
在你里面定义一个应用资源App.Xaml这样 通过您的应用程序可用。
现在这些资源将在所有 pages.You 中可用,可以像这样访问它们:
这样您将拥有应用程序范围的主题。
您还可以从隐藏代码访问应用程序资源:
gridName.Background=new SolidColorBrush((Color)Application.Current.Resources["ColorThree"]);
编辑 3 :
在你里面 app.xaml :
<ResourceDictionary>
<Color x:Key="ThemeColor">#f4425f</Color>
<SolidColorBrush x:Key="UserAccentBrush" Color="{StaticResource ThemeColor}"/>
</ResourceDictionary>
单击您的按钮只需更改 "UserAccentBrush" 的颜色,它将反映在所有使用画笔的控件中..
private void Button_Click(object sender, RoutedEventArgs e)
{
var brush = (SolidColorBrush)Application.Current.Resources["UserAccentBrush"];
if (cb.SelectedIndex != -1)
{
switch (cb.SelectedIndex)
{
case 0:
brush.Color = Color.FromArgb(255, 242, 101, 34);
break;
case 1:
brush.Color = Color.FromArgb(255, 232, 10, 90);
break;
}
}
}
请注意,我是直接使用application.current.resources,您可能需要稍微修改一下代码..
如果您需要保存此颜色并在用户下次打开应用程序时应用它,您需要将其保存到应用程序设置(或您可能正在维护的任何设置文件)并在应用程序加载时应用颜色更改代码..!