2012-07-17 98 views
1

WPF:我在进度条中有一个问题我希望它显示操作没有完成时,当我的操作完成时它会隐藏。请给我一个可以理解的例子,这样我就可以将它应用到我的工作中。提前致谢!WPF进度条

+0

WPF与ASP.NET无关。不要滥用标签。 – 2012-07-17 09:00:43

回答

2

你可以在不同的情况下做到这一点。

  1. 使用触发器,(我要选择一个)

    <ProgressBar Maximum="100" Margin="10,107,232,168" Value="0" Name="progr"> 
        <ProgressBar.Resources> 
         <Style TargetType="{x:Type ProgressBar}"> 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Value}" Value="100"> 
            <Setter Property="Visibility" Value="Hidden"/> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </ProgressBar.Resources> 
    </ProgressBar> 
    
  2. 使用转换器

    <Grid> 
    <Grid.Resources> 
        <delWpf:VisibilityConverter x:Key="conv"/> 
    </Grid.Resources> 
        <ProgressBar Name="prog2" Minimum="0" Maximum="100" 
         Value="{Binding CurrentIndex, UpdateSourceTrigger=PropertyChanged}" 
         Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Value, Mode=OneWay, Converter={StaticResource conv}}" /> 
    </Grid> 
    

和转换器

public class VisibilityConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return Math.Abs((double)value - 100) < 0.001 ? Visibility.Hidden : Visibility.Visible; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
+0

感谢您的回答,但是可以给我一个示例,当程序仍在读取函数时,进度条不会停止,当函数停止时,进度栏将会隐藏。因为这是我的确切情况。 。谢谢! – user27 2012-07-17 06:21:11

+0

我不确定我了解你。你想在函数启动时显示进度条,并在函数结束时隐藏它吗?如果是这样,你会有这样的卑鄙: private void RefreshData() { progressBar.Value = 0; // ... progressBar.Value = 100; }。但这没有多大意义,因为你可以在这里控制能见度。请详细说明 – Artiom 2012-07-17 06:25:10

+0

我只想在操作未完成时显示进度条,并在操作完成时隐藏进度条。 。对不起,如果你不能理解我,但谢谢你的时间。 – user27 2012-07-17 07:04:11

1

您可以使用具有BusyIndi​​cator控件扩展WPF工具包,

http://wpftoolkit.codeplex.com/wikipage?title=BusyIndicator

样品包括在下载。

有关您的信息,Microsoft将首先在Silverlight中引入BusyIndi​​cator(但未能为WPF装运一个)作为进度条的替代品。