我有一个RadioButton,它在打开弹出框时被选中。Popup控制键盘
<StackPanel>
<RadioButton x:Name="RadioButtonSave" IsChecked="{Binding IsSave}">Save</RadioButton>
<RadioButton x:Name="RadioButtonNotSave" IsChecked="{Binding IsSave,Converter={StaticResource ToNegativeConverter}}">Not Save</RadioButton>
</StackPanel>
<Popup x:Name="Popup" IsOpen="{Binding IsChecked,ElementName=RadioButtonNotSave}" StaysOpen="False" Placement="Left" PlacementTarget="{Binding ElementName=RadioButtonNotSave}">
<StackPanel>
<TextBox x:Name="PopupTextBox" />
</StackPanel>
</Popup>
<TextBox x:Name="TextBox" />
我想集中PopupTextBox打开弹出时,重点在关闭时弹出。(我的项目是键盘底座)文本框。
我使用这段代码来聚焦。
public class SetFocusTrigger : TargetedTriggerAction<Control>
{
protected override void Invoke(object parameter)
{
if (Target == null) return;
Target.Focus();
}
}
,并在XAML
<i:Interaction.Triggers>
<i:EventTrigger EventName="Opened">
<local:SetFocusTrigger TargetName="PopupTexBox"/>
</i:EventTrigger>
<i:EventTrigger EventName="Closed">
<local:SetFocusTrigger TargetName="TexBox"/>
</i:EventTrigger>
</i:Interaction.Triggers>
这是确定的,但打开时弹出RadioButtonNotSave失去了检查,并RadioButtonSave检查!
RadioButtonNotSave lost和RadioButtonSave绑定到“IsSave”属性(我假设用作datacontext的对象的属性)。检查你的代码的哪个部分会在哪些情况下改变该属性,并且你会知道发生了什么。您问题中的触发器似乎与“IsSave”属性的操作无关。 – elgonzo