当我检查或取消选中 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中完成所有操作?
答案 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找到更多信息。