2011-10-15 8 views
1

J'ai un expandeur ... et une zone de texte. La zone de texte est masquée par défaut. Lorsque l'utilisateur clique sur l'expandeur, j'affiche la zone de texte. Cela fonctionne bien. Ce dont j'ai besoin, c'est quand l'utilisateur clique sur l'expandeur ... J'ai besoin de mettre le focus dans la zone de texte.Comment définir le focus dans une zone de texte lorsque l'utilisateur clique sur un expandeur?

S'il vous plaît aidez-moi à faire cela ... J'ai essayé avec le code suivant ... mais il semble que "IsFocused" est en lecture seule.

Toute aide serait appréciée!

<StackPanel> 
    <DockPanel> 
    <TextBlock DockPanel.Dock="Left" Text="ID"/> 
     <Expander x:Name="ID" DockPanel.Dock="Right" IsExpanded="False" ExpandDirection="Down">              
     </Expander> 
    </DockPanel> 
    <TextBox Text="{Binding Path=SearchCCCId.Value,UpdateSourceTrigger=PropertyChanged}" 
    Visibility="{Binding ElementName=ID,Path=IsExpanded,Converter={x:Static local:Converters.BoolToVisibility}}" Width="70" > 
    <TextBox.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=ID, Path=IsEpanded}" Value="True" > 
       <Setter Property="IsFocused" Value="True" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </TextBox.Style> 
    </TextBox> 
</StackPanel> 

Répondre

0

Vous pouvez gérer l'événement Expanded d'Expander et définir le focus dans la méthode du gestionnaire.

private void OnExpanderExpanded(object sender, RoutedEventArgs args) 
{ 
    txtTest.Focus(); 
} 
1

Avec votre aide, je suis en mesure de trouver la réponse ...

<TextBox.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=ID, Path=IsExpanded}" Value="True"> 
       <Setter Property="FocusManager.FocusedElement" 
         Value="{Binding ElementName=PropertyIDSearch}"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBox.Style> 
Questions connexes