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: