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

时间:2015-06-04 06:27:58

标签: c# wpf xaml

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

我的xmal:

<CheckBox x:Name="checkbox1" Checked="checkbox1_Checked" Unchecked="checkbox1_Checked" />
<TextBox x:Name="textbox1" Text="Hello" />

我的C#:

private void checkbox1_Checked(object sender, RoutedEventArgs e)
{
    textbox1.Text = "";
    textbox1.Focus();
}

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

1 个答案:

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

在这个例子中,我们有一个CheckBox和一个TextBlock。使用DataTrigger,我们绑定TextBlock 到CheckBox的IsChecked属性。然后我们提供默认样式,其中包含文本 是“否”,前景色为红色,然后,使用DataTrigger,我们提供样式 当CheckBox的IsChecked属性更改为True时,在这种情况下我们会创建它 绿色的文字说“是的!” (如屏幕截图所示)。

您可以在here找到更多信息。