wpf 窗口 OnSourceInitialized
时间: 2023-07-19 20:30:47
浏览: 120
在 WPF 中,`OnSourceInitialized` 方法是[窗口](https://geek.csdn.net/educolumn/00d3d1b467be187bf63895f811603770?spm=1055.2569.3001.10083)生命周期中的一个重要事件。该事件在[窗口](https://geek.csdn.net/educolumn/00d3d1b467be187bf63895f811603770?spm=1055.2569.3001.10083)句柄创建后,但在[窗口](https://geek.csdn.net/educolumn/00d3d1b467be187bf63895f811603770?spm=1055.2569.3001.10083)显示之前触发。在这个事件中,你可以对[窗口](https://geek.csdn.net/educolumn/00d3d1b467be187bf63895f811603770?spm=1055.2569.3001.10083)的 Win32 句柄进行一些操作,例如设置[窗口](https://geek.csdn.net/educolumn/00d3d1b467be187bf63895f811603770?spm=1055.2569.3001.10083)样式、移动窗口、改变窗口大小等等。
以下是一个示例,演示如何在 `OnSourceInitialized` 方法中设置窗口的样式:
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
protected override void OnSourceInitialized(EventArgs e)
base.OnSourceInitialized(e);
IntPtr handle = new WindowInteropHelper(this).Handle;
int style = GetWindowLong(handle, GWL_STYLE);
SetWindowLong(handle, GWL_STYLE, style & ~WS_MAXIMIZEBOX);
private const int GWL_STYLE = -16;
private const int WS_MAXIMIZEBOX = 0x10000;
[DllImport("user32.dll"
```