[UWP]我从 SystemAccentColor 颜色创建了一个 SolidColorBrush 资源,我试图添加一个转换器来减轻颜色,但它只在运行时工作...我看到了颜色较浅,但如果我进入设置操作系统,我改变了重音颜色,它会改变其他文本,而我的颜色与转换器不起作用。有没有一种方法可以在我更改系统重音颜色时“更新”我的资源?
在我的应用中:
<Grid Background="{ThemeResource AuraAccent}"/>
<Grid Background="{ThemeResource AuraAccentLight1}"/>
的ResourceDictionary:
<SolidColorBrush x:Key="AuraAccent" Color="{ThemeResource SystemAccentColor}"/>
<SolidColorBrush x:Key="AuraAccentLight1" Color="{Binding Source={ThemeResource SystemAccentColor}, Converter={ThemeResource shade}, ConverterParameter=30}"/>
AuraAccent 在运行时和我更改强调色时工作。
AuraAccentLight1 在运行时工作,但在更改强调色时不起作用。
实际上如何运作: http://sharex.lucapatera.it/uploads/2016-08-31_19-34-32.mp4
答案 0 :(得分:0)
我浏览了一些资源字典文件,并注意到应用程序初始加载时将加载字典。实际主题资源的更改将更新,但不会更新自定义画笔(在您的情况下,AuraAccentLight1,因为它使用转换器)。
这就是我所做的。我没有创建一个仅使用一次Shade颜色的ResourceDictionary,而是将第二个Grid绑定到第一个网格,说第一个Grid的颜色发生变化时,第二个Grid Color也应该更新。
以下是我的XAML
<Grid x:Name="grid" Background="{ThemeResource AuraAccent}"/>
<Grid>
<Grid.Background>
<SolidColorBrush Color="{Binding Background.Color, Converter={StaticResource ColorHelper}, ElementName=grid,ConverterParameter=30}" />
</Grid.Background>
</Grid>
如果有帮助,请告诉我。
答案 1 :(得分:0)
受到AVK Naidu的启发,我已经以这种方式解决了:
<SolidColorBrush x:Key="AuraAccentLight1" Color="{Binding Color, Source={ThemeResource AuraAccent}, Converter={ThemeResource shade}, ConverterParameter=30}"/>
感谢所有人
最终结果: http://sharex.lucapatera.it/uploads/2016-09-10_19-33-45.gif