用户单击扩展器时如何在文本框中设置焦点?

时间:2011-10-15 04:44:09

标签: wpf textbox setfocus

我有一个扩展器......和一个文本框。默认情况下隐藏文本框。当用户点击扩展器时,我显示的是文本框。这工作正常。

我需要的是,当用户点击扩展器时...我需要在文本框中设置焦点。

请帮我这样做......我尝试使用以下代码......但似乎“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 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您可以处理扩展器的Expanded事件,并将焦点设置在处理程序方法中。

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

答案 2 :(得分:0)