类似于NSDrawer的WPF控件

时间:2017-06-20 16:05:42

标签: c# wpf

我正在尝试构建一个带有滑出式抽屉的WPF应用程序,就像许多macOS应用程序一样:

NSDrawer Example

我将如何实施此目标?

1 个答案:

答案 0 :(得分:0)

在WPF中,您通常会在当前窗口中使用单独的子WindowPopup来显示类似内容。弹出窗口将被限制在父窗口的边界内,而窗口可以位于屏幕上的任何位置。您可以非常轻松地启动新窗口:

var window = new Window();
// Initialize your content to whatever you want in the window
window.Content = new TextBlock() { Text = "Hello world };
window.Show();
// Use .Show() if you want to allow users to interact with both windows at the same time
// Otherwise use .ShowDialog() to force the user to interact/dismiss the child first

如果您希望将子窗口绑定到父窗口的一侧,则需要以某种方式控制子窗口的位置。 This SO article描述了控制窗口位置。您可能希望在父窗口的事件中执行此操作,这有意义,例如SizeChangedLocationChanged

最后,取决于你希望窗框看起来如何(我想象"抽屉"不应该看起来像一个完整的窗户,只是粘在一边你的父窗口)我至少会改变孩子的WindowStyle。此外,您可以使窗口透明,并完全重新设置内容,使其看起来更像您提供的图像。

这大致是您正在寻找的。我希望这会有所帮助。