none
Notificação ao mudar o foco para outro controle RRS feed

  • Pergunta

  • Tenho várias textbox e preciso saber qual delas está com o foco atual, através de um binding com o ViewModel, preciso saber qual o nome do textbox com o foco. E também preciso ser notificado quando o foco mudar de textbox, para atualizar as informações no ViewModel. Como posso fazer isto, pesquisei e não encontrei uma solução viável?

    	   <TextBlock Text="{Binding Path=NomeInformativoDisplay}"></TextBlock> 
    	   <TextBox  view:FocusExtension.IsFocused="{Binding Path=ElementoComFoco}"  Text="{Binding Path=NomeInformativo}"></TextBox>
                <TextBlock Text="{Binding Path=VersaoDisplay}"></TextBlock>
                <TextBox view:FocusExtension.IsFocused="{Binding Path=ElementoComFoco}" Text="{Binding Path=Versao}"></TextBox>

    Att,

    Diego,

    Bebedouro - SP.

    Desenvolvedor .Net C# e WPF.

    terça-feira, 15 de abril de 2014 19:53

Respostas

Todas as Respostas

  • Olá,

    A classe System.Windows.Input.Keyboard tem um evento estático denominado GotKeyboardFocus que é executado toda vez que um controle recebe Focus. Então, penso que você pode usá-lo.


    Herbert Lausmann

    • Marcado como Resposta Diego Rodriguess quarta-feira, 16 de abril de 2014 11:50
    terça-feira, 15 de abril de 2014 20:36
  • Obrigado,

    Com a combinação do método mais um pouco de código, o binding funcionou.

    <TextBlock Text="{Binding Path=NomeInformativoDisplay}"></TextBlock> 
    <TextBox Text="{Binding Path=NomeInformativo}">
    	<i:Interaction.Triggers>
                    <i:EventTrigger EventName="GotKeyboardFocus">
                    	<i:InvokeCommandAction Command="{Binding Path=MudarFocoCommand, Mode=OneWay}" CommandParameter="NomeInformativo"/>
            	</i:EventTrigger>
            </i:Interaction.Triggers>
    </TextBox>
    <TextBlock Text="{Binding Path=VersaoDisplay}"></TextBlock>
    <TextBox Text="{Binding Path=Versao}"></TextBox>

    quarta-feira, 16 de abril de 2014 11:56