所以我的Windows 8应用程序中有一个TextBlock元素,我覆盖了这样的前景色:
TestTextBlock.Foreground = new SolidColorBrush(Color.FromArgb(255,255,0,0));
我想稍后使用具有不同前景色的样式覆盖此颜色。式:
<Style TargetType="TextBlock" x:Key="MyStyle">
<Setter Property="Foreground" Value="Yellow"/>
</Style>
覆盖:
TestTextBlock.Style = (Style) App.Current.Resources["MyStyle"];
现在,如果我不首先初始化Foreground属性,这是有效的。好像Foreground优先于Style。事情是一个简化的例子,我无法删除设置Foreground属性的代码行。
还有其他解决方法吗?我尝试设置Foreground = null,但这导致了不可见的文本。
答案 0 :(得分:0)
您可以根据需要设置默认颜色,然后我个人通过Storyboard运行ColorAnimation
;
<Storyboard x:Key="ChangeThatForegroundColor">
<ColorAnimation Duration="0"
Storyboard.TargetName="YourTextBlockName"
Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)"
To="Yellow" />
</Storyboard>
您可以使用BeginStoryboard method将其关闭。希望这会有所帮助。
答案 1 :(得分:0)
希望这有帮助:它对我有用
<TextBlock x:Name="TestTextBlock" Text="Hello world"/>
1)仅使用solidcolorbrush覆盖SolidColorBrush
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
TestTextBlock.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
TestTextBlock.Foreground = new SolidColorBrush(Colors.Yellow);
}
2)覆盖仅限样式的样式
<Style x:Key="MyStyle" TargetType="TextBlock" >
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style x:Key="MyStyle1" TargetType="TextBlock" >
<Setter Property="Foreground" Value="Yellow"/>
</Style>
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
TestTextBlock.Style = (Style)App.Current.Resources["MyStyle"];
TestTextBlock.Style = (Style)App.Current.Resources["MyStyle1"];
}