以下内容不太有效(ProgressValue是在DataContext中设置的值。)

<StatusBarItem Grid.Column="1">
    <StatusBarItem.Resources>
        <Style TargetType="ProgressBar">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ProgressValue}" Value="0">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StatusBarItem.Resources>
    <ProgressBar Value="{Binding ProgressValue}" Grid.Column="1" Width="80" Height="13">
    </ProgressBar>
</StatusBarItem>

最佳答案

尝试指定一个最小值(和最大值)。设置完这些后,它似乎适用于我的代码版本。

使用此XAML:

    <StatusBarItem x:Name="Feedback" Grid.Row="1">
        <StatusBarItem.Resources>
            <Style TargetType="ProgressBar">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding}" Value="0">
                        <Setter Property="Visibility" Value="Hidden"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </StatusBarItem.Resources>
        <ProgressBar Value="{Binding Mode=OneWay}" Minimum="0" Maximum="10" Grid.Column="1" Width="80" Height="13">
        </ProgressBar>
    </StatusBarItem>


以及MainWindows.xaml.cs的构造函数中的此代码(仅用于测试目的)

    int value = 10;
    public MainWindow()
    {
        InitializeComponent();
        Feedback.DataContext = value;

        Timer t = new Timer(500);
        t.Elapsed += (s, e) =>
            {
                if (value > 0) Dispatcher.Invoke(new Action(() => { Feedback.DataContext = --value; }));
                else t.Stop();
            };

        t.Start();
    }


我得到进度条从10下降到0,此时进度条消失了。

关于c# - 如何创建ProgressBar,当Value为0时隐藏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6769444/

10-11 19:59