C# WPF的类NSDrawer控件

C# WPF的类NSDrawer控件,c#,wpf,C#,Wpf,我正试图构建一个带有滑出抽屉的WPF应用程序,就像许多macOS应用程序一样: 如何实现这一点?在WPF中,您通常会在当前窗口中使用单独的子窗口或子窗口来显示类似的内容。弹出窗口将被限制在父窗口的边界内,而窗口可以位于屏幕上的任何位置。您可以相当轻松地启动新窗口: var window = new Window(); // Initialize your content to whatever you want in the window window.Content = new TextBl

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


如何实现这一点?

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

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
如果希望子窗口绑定到父窗口的一侧,则需要以某种方式控制子窗口的位置。描述如何控制窗口位置。您可能希望在父窗口上有意义的事件期间执行此操作,如和

最后,根据您希望窗框的外观(我想“抽屉”不应该看起来像一扇完全打开的窗户,只是贴在您父母的窗户一侧),我至少会改变孩子的形状。此外,您可以使窗口透明,并完全重新设置内容的样式,使其看起来更像您提供的图像


这大概就是你要找的。我希望这会有所帮助。

您看过
NSDrawer
的文档了吗?苹果不赞成该类,并敦促开发人员避免使用抽屉式接口。如果你打算在app store上推广你的应用,你应该听从他们的建议,并考虑另一种显示/收集信息的方式。不,我没有,因为我的问题是如何使用WPF实现类似的功能。上次我检查过,你不能将WPF应用提交到Mac应用商店……问题是如何实现它,而不是实现它是否是一个好主意。