我为进度条添加了动画。
我试图在最大填充后停止动画(每次更改)。我根据需要处理的文件数从代码隐藏生成进度条最大值。
以下是我的代码段
<Trigger Property="Value" Value="10">
<Setter Property="Visibility" TargetName="Animation" Value="Collapsed"/>
</Trigger>
当进度条的最大值为10时,上面的触发器有效,但我的问题是如何将此值更新为动态生成的最大值。
有人可以帮助我吗?
我非常感谢你的时间
答案 0 :(得分:2)
执行此操作(但也更具可重用性)的更复杂方法是使用DataTrigger
MultiBinding
和IMultiValueConverter
:
public class EqualsConverver : IMultiValueConverter
{
public object Convert(object[] values, Type targetType,
object parameter, CultureInfo culture)
{
if (values.Length < 1)
return Binding.DoNothing;
var obj = values[0];
for (int i = 1; i < values.Length; ++i)
{
if (!obj.Equals(values[i]))
return false;
}
return true;
}
public object[] ConvertBack(object value, Type[] targetTypes,
object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
然后你的触发器看起来像:
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource equalsConverter}">
<Binding Path="Value" RelativeSource="{RelativeSource Self}" />
<Binding Path="Maximum" RelativeSource="{RelativeSource Self}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" TargetName="Animation" Value="Collapsed"/>
</DataTrigger>
答案 1 :(得分:1)
而不是触发器,并且因为你已经有了代码,你可以注册动画的completed event。