0

何をしてもプログレスバーは更新されません。

私のXAML:

<Grid Height="25">
    <Grid.Style>
        <Style TargetType="{x:Type Grid}">
            <Setter Property="Visibility" Value="Collapsed" />
            <!--EDITING HERE-->
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=PleaseWaitDialog, Mode=OneWay}"
                             Value="true">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
    <ProgressBar Value="{Binding Path=Percent}" />
</Grid>

次に、ViewModelで:

private double _percent;
public double Percent
{
    get { return _percent; }
    set
    {
        SetProperty("Percent", () => false, () => _percent = value);
    }
}

次に、次のように値を設定します。

_profileService.ApplyProfile(_data, (s, d) => UpdateApplyProgress(s, d, pleaseWaitVm));

更新は次のとおりです。

private void UpdateApplyProgress(string message, double percent, CUDialogVM dialogVm)
    {
        //Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => dialogVm.Progress = percent));

        dialogVm.Percent = percent;
    }

コーディネーターで試してみましたが、まだ機能しませんでした。また、値を明示的に設定してみましたが、何もしていません。また、デバッガーをチェックインし、viewModelのPercentプロパティが設定され、PropertyChangedEventが発生しています。

SetPropertyMethod:

protected bool SetProperty<T>(string propertyName, Func<bool> areEqual, Func<T> setValue)
    {
        VerifyPropertyName(propertyName);

        if (!areEqual.Invoke())
        {
            setValue.Invoke();
            RaisePropertyChanged(propertyName);
            IsChanged = true;
        }

        return true;
    }

私のバインディングの下のHBによると、現在は次のとおりです。

<ProgressBar Minimum="0" Maximum="100" Value="{Binding Percent}" />
4

2 に答える 2

1

ProgressBar.MinimumMaximumデフォルトは0とです。1値はその範囲内ですか? そうでない場合は、それらのプロパティを適宜変更してください。

于 2012-08-28T19:26:08.433 に答える
0

XAML でそれを試してください。

 <ProgressBar Value="{Binding Path=Percent, UpdateSourceTrigger=PropertyChanged}" />

さらに、ProgressBar値は 0 から 100 の間でなければなりません!

于 2012-08-28T19:26:51.707 に答える