gpt4 book ai didi

wpf - 当依赖属性改变时运行动画

转载 作者:行者123 更新时间:2023-12-01 11:58:42 27 4
gpt4 key购买 nike

我创建了一个具有两个依赖属性的 UserControl:Value 和 Color。 UserControl 的颜色取决于 Value 属性。例如,如果 Value=0 Color=Blue,Value=0.5 Color=Red 等等。这是我使用绑定(bind)到 Fill 属性的自定义转换器实现的,如下所示:

<Ellipse Name="dotForeground" Stroke="Transparent" StrokeThickness="1" Fill="{Binding ElementName=control1, Converter={StaticResource colorConverter}, Path=Value}"/>

现在我需要的是,当 Value 属性从 0.0 变为 0.5 时,这也会随之改变 Color 属性,我想创建一个 ColorAnimation 以便它从以前的颜色淡入新的颜色。

我将不胜感激。

最佳答案

有几种方法可以做到这一点,一种是将画笔绑定(bind)到 Color 属性而不是使用转换器:

<Ellipse Name="dotForeground" Stroke="Transparent" StrokeThickness="1">
<Ellipse.Background>
<SolidColorBrush Color="{Binding Color, ElementName=control1}" />
</Ellipse.Background>
</Ellipse>

然后在 Value 更改时在您的 UserControl 中启动 ColorAnimation。

public Color Color
{
get { return (Color)GetValue(ColorProperty); }
set { SetValue(ColorProperty, value); }
}

public static readonly DependencyProperty ColorProperty = DependencyProperty.Register("Color", typeof(Color), typeof(MyUserControl), new UIPropertyMetadata(Colors.Red));

public double Value
{
get { return (double)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}

public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(double), typeof(MyUserControl), new UIPropertyMetadata(0.0,ValueChanged));

private static void ValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var control = (MyUserControl)sender;

var anim = new ColorAnimation { To = Color.FromRgb((byte)control.Value, 128, 60), FillBehavior = FillBehavior.HoldEnd};
control.BeginAnimation(MyUserControl.ColorProperty, anim);
}

关于wpf - 当依赖属性改变时运行动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3677572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com