2011-10-15 6 views
1

확장기가 있고 ... 텍스트 상자가 있습니다. 텍스트 상자는 기본적으로 숨겨져 있습니다. 사용자가 확장기를 클릭하면 텍스트 상자가 표시됩니다. 이것은 잘 작동합니다.사용자가 확장기를 클릭 할 때 텍스트 상자에 포커스를 설정하는 방법은 무엇입니까?

사용자가 확장기를 클릭하면 텍스트 상자에 포커스를 설정해야합니다.

제발 도와주세요 ... 다음 코드를 시도했지만 ... "IsFocused"readonly 속성을 것 같습니다.

도움이 될 것입니다.

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

답변

0

Expanded 확장자 이벤트를 처리하고 처리기 메서드 내에 포커스를 설정할 수 있습니다.

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

, 내가 대답을 찾을 수 오전 ...

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