我有以下资源字典配置:
ColorsDic.xaml包含
<Color x:Key="MyColor">#FF39ADFB</Color>
<SolidColorBrush x:Key="GenericBackColor" Color="{DynamicResource MyColor}"/>
<SolidColorBrush x:Key="ControlDark" Color="{DynamicResource MyColor}"/>
<SolidColorBrush x:Key="ControlLight" Color="{DynamicResource MyColor}" opacity="0.3"/>
MainDic.xaml包含
<ResourceDictionary.MergedDictionaries >
<ResourceDictionary Source="./Recursos/ColorsDic.xaml"/>
</ResourceDictionary.MergedDictionaries >
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}" >
<Setter Property="Background" Value="{StaticResource GenericBackColor}"></Setter>
<Setter Property="Foreground" Value="{Binding Path=Background,RelativeSource={RelativeSource Self}, Converter={StaticResource BackToForeColor}}"></Setter>
</Style>
现在问题: 我做了一个用户控件,其中包含一个前面定义的样式的按钮,其主背景颜色设置为“ControlDark”实心画笔。当我从应用程序主窗口更改“MyColor”的值时,按钮会进行所有更改,但不会获取用户控件的背景。 有什么问题?
谢谢!
答案 0 :(得分:0)
尝试将Static的背景属性设置器按钮从StaticResource更改为DynamicResource。
如果您尝试在运行时更改颜色,静态资源仅在实例化时抓取资源,并在资源更改时不更新。
编辑: 如果问题出在用户控件的背景上,则可以使用边框设置用户控件的背景:
<Grid>
<!-- Pick a backgound color here-->
<Border Background="Red"/>
<Button Content="TEST" Height="20" Width="50"/>
</Grid>
如果用户控件不需要背景且只有其中的控件执行操作,则将用户控件的背景设置为透明:
<UserControl x:Class="UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
xmlns:local="clr-namespace:WpfApplication5"
Background="Transparent">
<Grid>
<Button Content="TEST" Height="20" Width="50"/>
</Grid>
</UserControl>