3

プログレスバーのアニメーションを追加しました。

最大塗りつぶし後にアニメーションを停止しようとしています(毎回変更されます)。処理する必要のあるファイルの数に基づいて、コードビハインドからプログレスバーの最大値を生成しています。

以下は私が持っているコードスニペットです

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

</Trigger>

上記のトリガーは、プログレスバーの最大値が10の場合に機能しますが、私の質問は、この値を動的に生成された最大値に更新する方法です。

誰か助けてくれませんか?

本当にありがとうございました

4

2 に答える 2

2

これを行うためのより複雑な方法(ただし、より再利用可能)は、DataTriggeraMultiBindingIMultiValueConverter:を使用することです。

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 に答える