WPF: Como fazer um simples indicador de estado ocupado

Num artigo anterior falamos Como actualizar o estado de controlos depois de um comando executar. Agora vamos seguir esses conceitos e criar um indicador de estado ocupado.

Por favor verifiquem o artigo anterior para algum do código necessário. Para simplificar, precisamos de uma propriedade IsBusy no nosso view model e activar ou desactivar essa propriedade antes e depois de realizar processamento.

A partir dessa base, adicionamos à nossa view uma ProgressBar dentro duma StatusBar e ligamos à propriedade IsBusy.

<StatusBar Height="28">
    <ProgressBar
        IsIndeterminate="True"
        Width="100"
        Height="20"
        Visibility="{Binding IsBusy, Converter={my:BoolVisibilityConverter}}" />
</StatusBar>

O código do conversor:

[ValueConversion(typeof(bool), typeof(Visibility))]
public class BoolVisibilityConverter : ConverterMarkupExtension<BoolVisibilityConverter>
{
    public BoolVisibilityConverter()
    {
    }
 
    public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null && value is bool)
        {
            if ((bool)value)
            {
                return Visibility.Visible;
            }
        }
  
        return Visibility.Collapsed;
    }
}

Fazemos uso da mesma lógica que discutimos no artigo Como usar conversores sem criar recursos estáticos.

O resultado:

Indicador de estado ocupado
Indicador de estado ocupado

Artigos relacionados