我有一个WPF应用程序,有两个来自两个不同dll的xaml窗口。两个Dll同时加载并显示其工作正常的窗口。还有另一个第三方软件窗口。
请注意,所有窗口都是无边框的(windowstyle = none)。
我的问题是我希望焦点保留在两个xaml窗口中的一个。一旦焦点转到第三方软件窗口,我希望任何一个xaml窗口重新获得它。我怎样才能做到这一点?也许在OnDeactivate事件中?
public void OnMainGUIDEactivate(object sender, EventArgs e)
{
Activate();
}
//尝试添加应用程序停用
public MyFirstView()
{
InitializeComponent();
Application.Current.Deactivated += AppDeactivated;
}
void AppDeactivated(object sender, EventArgs e)
{
// Application deactivated
Activate();
}
答案 0 :(得分:0)
您所追踪的事件是:Application.Current.Deactivated
然后您可以将其调用以重新激活,这样您就可以使用whatever.Activate()
调用任一表单并将其恢复
答案 1 :(得分:0)
有MVVM / Blend方法:
在你的窗口上声明:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
然后在窗口的Deactivated事件上调用focus方法
<i:Interaction.Triggers>
<i:EventTrigger EventName="Deactivated" >
<ei:CallMethodAction MethodName="Focus" TargetObject="{Binding ElementName=mywindow}" />
</i:EventTrigger>
</i:Interaction.Triggers>
答案 2 :(得分:0)
我通过解决方法解决了这个问题。
在两个xamls上我使用了Topmost =&#34; True&#34;