3

我为进度条添加了动画。

我试图在最大填充后停止动画(每次都更改)。我正在根据我需要处理的文件数从后面的代码中生成进度条最大值。

以下是我的代码片段

<Trigger Property="Value" Value="10">
    <Setter Property="Visibility" TargetName="Animation" Value="Collapsed"/>

</Trigger>

当进度条的最大值为 10 时,上述触发器有效,但我的问题是如何将此值更新为动态生成的最大值。

有人可以帮我吗?

我真的很感激你的时间

4

2 回答 2

2

一种更复杂的方法(但也更可重用)是将 aDataTrigger与 aMultiBinding和 a一起使用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>
于 2013-03-26T19:18:40.043 回答
1

而不是触发器,并且由于您已经有代码,您可以注册动画的完成事件

于 2013-03-26T17:12:02.550 回答