我的应用程序的焦点窗口

时间:2016-05-24 08:54:10

标签: c# wpf windows xaml

我有一个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();
    }

3 个答案:

答案 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;