Как установить фокус в текстовом поле, когда пользователь нажимает на расширитель? - PullRequest
1 голос
/ 15 октября 2011

У меня есть расширитель ... и текстовое поле. Текстовое поле скрыто по умолчанию. когда пользователь нажимает на расширитель, я отображаю текстовое поле. Это работает нормально.

Что мне нужно, так это когда пользователь нажимает на расширитель ... Мне нужно установить фокус в текстовом поле.

Пожалуйста, помогите мне сделать это ... Я попытался с помощью следующего кода ... но кажется, "IsFocused" свойство только для чтения.

Любая помощь будет оценена!

<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>

Ответы [ 3 ]

1 голос
/ 15 октября 2011

С вашей помощью я смогу найти ответ ...

<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>
0 голосов
/ 15 октября 2011
0 голосов
/ 15 октября 2011

Вы можете обработать Расширенное событие Expander и установить фокус внутри метода обработчика.

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