Questo post nasce da una domanda di Igor, posto qui il risultato affichè possa essere d'aiuto ad altri.
L'obiettivo è quello di aggiornare il contenuto di uno Statusbaritem quando le varie texbox contenute in una window prendono il focus, il testo da riportare è contenuto nella proprietà Tag delle singole Textbox.
In alternativa al classico routed event a livello di Window, una soluzione interessante nasce dal fatto che ad uno stile è possibile associare un evento che verrà invocato allo scattare del relativo Trigger attraverso la tag EventSetter.

Di seguito lo XAML e il codice:

   1:    <Window.Resources>
   2:      <Style TargetType="{x:Type TextBox}">
   3:        <Setter Property="FontFamily" Value="Tahoma" />
   4:        <EventSetter Event="GotFocus" Handler="OnGotFocus" />
   5:      </Style>
   6:    </Window.Resources>
   7:   
   8:    <StackPanel x:Name="LayoutRoot">
   9:      <TextBox Tag="Hello from txt1" Margin="10" />
  10:      <TextBox  Tag="Hello from Txt2" Margin="10"/>
  11:      <StatusBarItem x:Name="sbi" Height="20" Margin="10"/>
  12:    </StackPanel>
 
 
   1:  private void OnGotFocus (object sender, RoutedEventArgs e)
   2:  {
   3:       sbi.Content = (sender as TextBox).Tag.ToString();  
   4:  }

 

Technorati Tags: