У меня небольшая проблема с фокусом на WPF.Я хочу создать окно, всегда сверху, и оно никогда не получит фокус (даже если мы нажмем на него).
Вот мое решение:
public partial class SkinWindow : Window
{
public SkinWindow()
{
InitializeComponent();
Loaded += ( object sender, RoutedEventArgs e ) => SetNoActiveWindow();
}
private void SetNoActiveWindow()
{
WindowInteropHelper helper = new WindowInteropHelper( this );
SetWindowLong( helper.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE );
LockSetForegroundWindow( LSFW_LOCK );
}
const int GWL_EXSTYLE = -20;
const int WS_EX_NOACTIVATE = 134217728;
const int LSFW_LOCK = 1;
[DllImport( "user32" )]
public static extern bool LockSetForegroundWindow( uint UINT );
[DllImport( "user32" )]
public static extern IntPtr SetWindowLong( IntPtr hWnd, int nIndex, int dwNewLong );
}
Первая проблема: это работает, но я должен выбрать другое окно, чтобы «убрать» фокус моего приложения (после того, как фокус снова не выдан, даже если я нажму на свое окно).Вторая проблема: когда я перемещаю или изменяю размер окна, изменения происходят, когда я опускаю окно.
Есть ли у вас какие-либо идеи / ссылки / документы?Спасибо:)