【发布时间】:2012-07-17 17:03:13
【问题描述】:
WPF:我的进度条出现问题,我希望它在操作未完成时显示,当我的操作完成时它会隐藏。请给我看一个可以理解的例子,这样我就可以把它应用到我的工作中。提前致谢!
【问题讨论】:
-
WPF 与 ASP.NET 无关。不要滥用标签。
标签: wpf
WPF:我的进度条出现问题,我希望它在操作未完成时显示,当我的操作完成时它会隐藏。请给我看一个可以理解的例子,这样我就可以把它应用到我的工作中。提前致谢!
【问题讨论】:
标签: wpf
你可以在不同的场景中做到这一点。
使用触发器,(我更喜欢)
<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>
使用转换器
<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();
}
}
【讨论】:
您可以使用具有 BusyIndicator 控件的扩展 WPF 工具包,
http://wpftoolkit.codeplex.com/wikipage?title=BusyIndicator
示例包含在下载中。
供您参考,Microsoft 首先在 Silverlight 中引入了 BusyIndicator(但未能为 WPF 提供一个)作为进度条的替代品。
【讨论】: