我似乎无法使用AppBar
获取ColorAnimation
的背景色。
<Storyboard x:Name="FadeColorStoryboard">
<ColorAnimation
Storyboard.TargetName="bar"
Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
From="Yellow" To="Green" Duration="0:0:1" />
</Storyboard>
我通过动画TextBlock
的前景色来测试故事板,但它确实有效。我有任何方式可以动画AppBar的背景颜色吗?
我也尝试使用自定义附加属性来更改背景颜色,但我不能将故事板的TargetProperty设置为自定义附加属性,这与Silverlight不同。
答案 0 :(得分:4)
好的,所以我想出了一个解决方案。它不是最好的解决方案,但它可以满足我的需求。如果有更好的方法,我仍然感兴趣,但现在这样做。
编辑:忘记提及,由于某种原因,EnableDependentAnimation
要求ColorAnimation
设置为true。
我已将CommandBar
子类化,并添加了我自己的BackgroundColor
属性,该属性可以设置动画。
class CommandBarEx : CommandBar
{
public Color BackgroundColor
{
get { return (Color)GetValue(BackgroundColorProperty); }
set { SetValue(BackgroundColorProperty, value); }
}
public static readonly DependencyProperty BackgroundColorProperty =
DependencyProperty.Register("BackgroundColor", typeof(Color), typeof(CommandBarEx), new PropertyMetadata(Colors.Gray, onBackgroundColorPropertyChanged));
static void onBackgroundColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var bar = d as CommandBarEx;
if (bar == null)
return;
var brush = bar.Background as SolidColorBrush;
if (brush == null)
{
bar.Background = new SolidColorBrush((Color)e.NewValue);
}
else
{
brush.Color = (Color)e.NewValue;
bar.Background = brush; // force property change event
}
}
}