WindowChrome
无边框
WPF中自定义的界面的方式可以分为两种,尽量使用 WindowChrome 而不要使用 AllowsTransparency=True:
- 使用 AllowsTransparency=”True”和WindowStyle=”None”,ResizeMode=”NoResize”,这种呢就相当于直接把原生非客户区给干掉了,然后我们在内容区域自己去实现非客户区,就会导致窗口自定的行为如:缩放,拖动,停靠边界放大。这些功能全都没有了,如果需要的话,是需要自己手动代码添加的。
-
使用我们的WindowChrome来自定义界面, 这种方式保留了一个窗口基本的行为,只需要我们重新规划一下客户区和非客户区就行了。此时为了消除隐藏的最大,最小和关闭功能,还需要添加ResizeMode=”NoResize”和Closing=”Window_Closing”属性。
ResizeMode="NoResize" <WindowChrome.WindowChrome> <WindowChrome /> </WindowChrome.WindowChrome> private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if (result == MessageBoxResult.None) { e.Cancel = true; } }