У меня есть небольшая проблема с фокусом на WPF. Я хочу создать окно, всегда сверху, и никогда не получаю фокус (даже если мы нажмем на него).Некоторые вопросы о фокусе на 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);
}
Первая проблема: Это работает, но я выбрать другое окно, чтобы «убрать» фокус моего приложения (после того, как фокус снова не дал, даже если Я нажимаю на свое окно). Вторая проблема: когда я перемещаю или изменяю размер окна, изменения происходят, когда я бросаю окно.
Есть ли у вас какие-либо идеи/ссылки/документы? Спасибо :)