【问题标题】:Focus textbox after checking checkbox选中复选框后聚焦文本框
【发布时间】:2014-11-18 21:46:08
【问题描述】:
那是我的 xaml:
<CheckBox Content="Length" IsChecked="{Binding Path=MessageLengthChecked}" x:Name="LengthCheckBox"/>
<TextBox x:Name="LengthTextBox" Text="{Binding Length}" IsEnabled="{Binding ElementName=LengthCheckBox, Path=IsChecked}"/>
如果用户选中复选框,文本框应该被聚焦并且内容应该被标记。
我该怎么做?
【问题讨论】:
标签:
c#
.net
wpf
xaml
checkbox
【解决方案1】:
你可以这样做是从你的复选框中选中的事件
LengthTextBox.Focus();
LengthTextBox.SelectAll();
【解决方案2】:
将您的控件包含在父容器中,例如网格,并触发数据触发器以设置焦点元素。
<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>
【解决方案3】:
在 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
}
}