Compartilhar via


desabilitar o comando fonte por meio de amostra de timer do sistema

Este exemplo mostra como ativar e desabilitar a fonte de comando via um Windows.sistema.Timers.Timer.

Um Windows.sistema.Timers.Timer é executado em um thread separado que o thread da interface do usuário, portanto é necessário algum trabalho extra para atualizar a interface de usuário. Outra maneira de resolver esse problema e na maioria dos casos, uma maneira melhor e mais elegante, é um uso o DispatcherTimer. Isso é mais fácil porque o DispatcherTimer é executado no mesmo thread de thread da interface do usuário. Para obter informações, consulte o desabilitar o comando fonte através de exemplo de timer do Dispatcher exemplo. Há vezes porém ao talvez você precise usar uma classe que não é executado no thread da interface do usuário, para que esse exemplo mostra como fazer isso.

Comando fontes, sistema autônomo a MenuItem classe e o Button classe, ouça o CanExecuteChanged evento na RoutedCommand Eles são conectados a fim de determinar quando precisam consultar o comando para ver se o comando pode ser executado no seu corrente destino. Comando fontes normalmente desativará eles mesmos se o comando não pode executar e ativar eles mesmos se o comando pode executar, sistema autônomo quando um MenuItem cinza 'sistema autônomo próprio fora quando não é possível executar o comando.

The CommandManager notifica o RoutedCommand por meio do RequerySuggested evento condições foram alterados com o comando de destino. The RoutedCommand aumenta a CanExecuteChanged evento que ouve o comando de fonte. Normalmente, esse mecanismo de notificação é adequado, mas há algumas situações em que o CommandManager não sabe que as condições foram alterados no seu destino e, portanto, o RequerySuggested evento nunca é gerado e a fonte do comando nunca consulta o RoutedCommand. Nessas situações o CommandManager pode ser forçado para elevar o RequerySuggested evento, chamando InvalidateRequerySuggested.

Esse exemplo cria um RoutedCommand que podem ser executadas somente quando os segundos da time corrente forem maiores do que um valor de destino. sistema.Windows.Timers.Timer é criado e envia um trabalho no Dispatcher do thread da interface do usuário cada segundo. Desde que essa tarefa está agendada no Dispatcher do thread da interface do usuário, o thread da interface do usuário irá atualizar a interface do usuário para nós.

O método que será enviado para o Dispatcher chamadas InvalidateRequerySuggested. Isso assegura que a fonte do comando receberá o CanExecuteChanged evento, de modo que ele pode chamar o CanExecute método no comando.

Para obter mais informações sobre comandando consulte o Visão geral de Comando.

Este exemplo demonstra um recurso específico da Windows Presentation Foundation e, consequentemente, não segue boas práticas de desenvolvimento de aplicativos. Para ver uma cobertura abrangente de boas práticas de desenvolvimento de aplicativos Windows Presentation Foundation (WPF) e Microsoft .NET Framework, consulte os seguintes itens conforme adequado:

Acessibilidade - Práticas recomendadas de Acessibilidade

Segurança - Windows Presentation Foundation Security

Localização - Visão geral de globalização e localização do WPF

Download sample

O exemplo de criação

  • Instale o Windows Software Development Kit (SDK) e abra sua janela de comando de ambiente de compilação. No menu Iniciar, aponte para Todos os Programas, Microsoft Windows SDK e clique em Shell CMD.

  • Baixe o exemplo, geralmente da documentação do software development kit (SDK), para a unidade de disco rígido.

  • Para compilar o exemplo na janela de comando do ambiente de compilação, vá para o diretório fonte do exemplo. Na prompt de comando, digite MSBUILD.

  • Para compilar o exemplo em Microsoft Visual Studio, carregue a solução de exemplo ou o arquivo de projeto e, em seguida, pressione CTRL+SHIFT+B.

Executando o exemplo

  • Para executar o exemplo compilado na janela de comandos do ambiente de compilação, execute o arquivo .exe na pasta Bin\Debug ou Bin\Release contida na pasta de código-fonte do exemplo.

  • Para executar o exemplo compilado com a depuração no Visual Studio, pressione F5.

Consulte também

Tarefas

desabilitar o comando fonte através de exemplo de timer do Dispatcher

Conceitos

Visão geral de Comando