我在WPF中有几个文本框和单选按钮集合.我想使用触发器设置oly的一个单选按钮的IsChecked属性,如果任何文本框获得焦点,则该单选按钮具有名称.我查了几个例子但是找不到我要找的东西.请记住,我们使用的是MVVM模式,没有代码.
我尝试了以下代码并出现此编译错误:
无法在样式设置器上设置TargetName属性
<UserControl.Resources>
<Style x:Name="myTest" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RadioButton.IsChecked" Value="True" TargetName="myRadioButton"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
我读了其他帖子,DataTrigger解决了这个问题.
<Style x:Name="myTest2" TargetType="RadioButton" >
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=myTextBox}" Value="True">
<Setter Property="IsChecked" Value="True" ></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我认为您正在寻找 GotFocus 活动。
在 XAML 中:
<TextBox x:Name="textBox1" GotFocus="tb_GotFocus"/>
<TextBox x:Name="textBox2" GotFocus="tb_GotFocus"/>
<TextBox x:Name="textBox3" GotFocus="tb_GotFocus"/>
<RadioButton x:Name="myRadioButton"/>
Run Code Online (Sandbox Code Playgroud)
然后在你的 C# 中你的事件处理程序可能看起来像这样
private void tb_GotFocus(object sender, RoutedEventArgs e)
{
myRadioButton.IsChecked = true;
}
Run Code Online (Sandbox Code Playgroud)
如果任何文本框获得焦点,它将检查名为 myRadioButton 的 RadioButton。