通过XAML中的CheckBox更改TextBox文本和焦点

wal*_*ang 1 c# wpf xaml

当我选中取消选中 a时CheckBox,我想清除TextBox并设置焦点.我使用代码隐藏实现了它.

我的xmal:

<CheckBox x:Name="checkbox1" Checked="checkbox1_Checked" Unchecked="checkbox1_Checked" />
<TextBox x:Name="textbox1" Text="Hello" />
Run Code Online (Sandbox Code Playgroud)

我的C#:

private void checkbox1_Checked(object sender, RoutedEventArgs e)
{
    textbox1.Text = "";
    textbox1.Focus();
}
Run Code Online (Sandbox Code Playgroud)

是否可以在XAML中完成所有操作?

Noa*_*m M 5

使用数据触发器.它们通过创建与常规属性的绑定来工作,然后监视其更改.

例如,请考虑以下示例:

<Window x:Class="WpfTutorialSamples.Styles.StyleDataTriggerSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="StyleDataTriggerSample" Height="200" Width="200">

    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <CheckBox Name="cbSample" Content="Hello, world?" />
        <TextBlock HorizontalAlignment="Center" Margin="0,20,0,0" FontSize="48">

            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Setter Property="Text" Value="No" />
                    <Setter Property="Foreground" Value="Red" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=cbSample, Path=IsChecked}" Value="True">
                            <Setter Property="Text" Value="Yes!" />
                            <Setter Property="Foreground" Value="Green" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>

        </TextBlock>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们有一个CheckBox和一个TextBlock.使用DataTrigger,我们将TextBlock绑定到CheckBox的IsChecked属性.然后我们提供一个默认样式,其中文本为"No",前景色为红色,然后,使用DataTrigger,我们提供一个样式,用于CheckBox的IsChecked属性更改为True时,在这种情况下我们制作它绿色,上面写着"是的!" (如屏幕截图所示).

你可以在这里找到更多.