2016-05-24 4 views
0

У меня есть приложение WPF с двумя окнами xaml из двух разных dll. Обе библиотеки 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

Вы пробовали? – BugFinder

+0

Я пробовал событие OnDeactivate, которое отлично работает, если у меня есть один xaml, но я хочу дополнительно добавить условие, которое активирует(), должен срабатывать только в том случае, если мой второй xaml не активен – user2837961

ответ

0

На мероприятии вы после: Application.Current.Deactivated

вы можете назвать его активировать, так что вы можете позвонить либо из ваших формы с whatever.Activate(), и он вернет его обратно

+0

В одном из конструкторов xaml, которые я сделал (Код добавлен в вопрос), но мой xaml не показывает? – user2837961

0

Подход MVVM/Blend:

Объявите это на окне:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"     
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"         

Затем вызовите метод фокусировки на деактивированном случае окна

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Deactivated" > 
     <ei:CallMethodAction MethodName="Focus" TargetObject="{Binding ElementName=mywindow}" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 
+0

Как я могу проверить, что второй xaml не активирован? – user2837961

0

Я решил эту проблему путем работы вокруг.

На обоих xamls я использовал Topmost = "True"

Смежные вопросы