选中复选框后的焦点文本框

本文关键字:焦点 文本 复选框 | 更新日期: 2023-09-27 18:30:52

那是我的xaml:

<CheckBox Content="Length" IsChecked="{Binding Path=MessageLengthChecked}" x:Name="LengthCheckBox"/>
<TextBox x:Name="LengthTextBox" Text="{Binding Length}" IsEnabled="{Binding ElementName=LengthCheckBox, Path=IsChecked}"/>

如果用户选中该复选框,则应聚焦文本框并标记内容。我该怎么做?

选中复选框后的焦点文本框

你可以这样做 这是复选框中的选中事件

 LengthTextBox.Focus();
 LengthTextBox.SelectAll();

将控件包含在父容器(例如网格)中,然后触发数据触发器以设置焦点元素。

    <Grid>
       <Grid.Style>
          <Style>
             <Style.Triggers>
                 <DataTrigger Binding="{Binding MessageLengthChecked}" Value="True">
                     <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=LengthTextBox}"/>
                 </DataTrigger>
             </Style.Triggers>
          </Style>
      </Grid.Style>
      <CheckBox Content="Length" IsChecked="{Binding Path=MessageLengthChecked}" x:Name="LengthCheckBox"/>
      <TextBox x:Name="LengthTextBox" Text="{Binding Length}" IsEnabled="{Binding ElementName=LengthCheckBox, Path=IsChecked}"/>
    </Grid>        

在 XAML 中添加事件复选框

<CheckBox Content="CheckBox"  Name="myCheckBox"  Checked="myCheckBox_Checked" />

通过 c# 代码尝试以下操作:

private void myCheckBox_Checked(object sender, RoutedEventArgs e)
{
     if (((CheckBox)sender).IsChecked == true)
     {
           myTextBox.Focus();
           myTextBox.SelectAll();
     }
     else
     {
           //TODO
     }
}