有些关于WPF的问题

我有一个专注于WPF的小问题。 我想创造一个窗口,永远在最前面,永远不会得到焦点(即使我们点击它)。

这是我的解决scheme:

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 ); } 

第一个问题:这是有效的,但我必须select另一个窗口来“移除”我的应用程序的焦点(焦点不再给予,即使我点击我的窗口)。 第二个问题:当我移动窗口或调整窗口大小时,当我放下窗口时会发生修改。

你有任何想法/链接/文档? 谢谢 :)

你可能想看看这个SO帖子: 使一个窗体不能在C#中集中 。 答案是特定于Windows窗体。 然而,主要部分是使用Win32函数完成的,所以也许你可以从那里得到一些想法…