Как насчет использования события IsVisibleChanged.
В вашем окне либо определение базового класса, которое вы используете во всем приложении, либо только тот, который вас интересует. Добавьте вызов при открытии чего-либо как
public class MyBaseclassWindow : Window
{
public MyBaseclassWindow()
{
IsVisibleChanged += MyBaseclassWindow_IsVisibleChanged;
}
private void MyBaseclassWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
// e.NewValue will be TRUE when the visibility is coming back on
if ( !e.NewValue )
return;
// do whatever you want every time window becomes visible.
}
}
Если это то, что вы хотите сделать в своей системе, то вы можете просто использовать ЭТОЕ окно в качестве базового, всегда используя его при создании форм.