关于实现更换主题颜色的一个问题
比如在 应用程序资源集 中设置了一个<Color x:Key="BaseColor">#FF112233</Color>
所有的界面元素都以这种颜色为基调
如果直接使用这个Color倒是没问题
但实际中不可能所有界面元素都一个颜色,必然要进行一些微调,比如增加或降低透明度,饱和度等等
这个时候不知道该怎么设置才好
我想到两种办法,都感觉不太好
第一种,不要这个BaseColor资源,把它移动到程序代码中。然后在改变BaseColor的时候通过程序代码设置所有界面元素的颜色。
随着界面元素越来越多,这个设置过程会越来越大
第二种,在资源集里加一系列颜色资源,比如
<Color x:Key="TextBlockForegrounColor/>
<Color x:Key="ButtonEnabledBackgroundColor/>
…… ……
这样的话,BaseColor也就没有存在的意义了,因为每次用户改变主题颜色的时候都是直接改变这一大堆Color