2012-03-17 69 views
2

我目前正在为Windows开发Twitter应用程序,类似于Twitter客户端的OSX。将窗口按钮置于前面

我使用Windows Shell Extensions库here来制作整个窗口Aero,并且能够扩展到指定窗口位置的范围之外。

我希望窗口按钮(最小化,最大化,关闭)显示在白色背景的网格顶部。这是我认为会内置在Windows中的功能,但显然我错了。

下面的两张图片说明了我的观点。在第二个图像中,我希望窗口按钮优先于白色背景网格,而不是像其显示的那样。

是否有某种代码段或XAML-snippet能帮助我?有没有其他人曾经有过这个问题?

Window sized so that buttons show Window sized so that buttons don't show.

回答

0

你应该隐藏你的最大化最小化和关闭按钮,并绘制自己喜欢这里描述。

http://winsharp93.wordpress.com/2009/07/21/wpf-hide-the-window-buttons-minimize-restore-and-close-and-the-icon-of-a-window/

+0

看,但我真的想避免这样做,如果可能的话。我真的更喜欢使用默认的Windows按钮来显示对话框中的所有内容,仅仅是因为我正在专注于使这个应用程序看起来像Windows。 – sammarks 2012-03-17 14:50:37

+0

好,但如果你想保持原生,你应该保留标题栏。你有什么样的应用程序能够成功吗?你可以窥探他们获取所需的WM消息,然后在你自己的窗口中使用它们。 – 2012-03-17 15:11:45

+0

哈哈我想我伪装他们:)看看这个项目:http://www.tahapaksu.com/personal/sandbox.rar – 2012-03-17 17:02:01

2

我偶然发现了一个简单而肮脏的解决方案。我只是绕过Windows按钮的外部,并将外部背景设置为白色,或者使用任何背景颜色。然后,我只是拼凑了矩形,使它看起来不错。

下面是生成的代码:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Row="0" Height="20"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1.0*" /> 
     <ColumnDefinition Width="105" /> 
     <ColumnDefinition Width="5" /> 
    </Grid.ColumnDefinitions> 
    <Rectangle Grid.Column="0" Fill="#FFFFFFFF" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
    <Path HorizontalAlignment="Stretch" Grid.Column="1" Stretch="Fill" VerticalAlignment="Bottom" Height="20" Fill="#FFFFFFFF" Data="M 0,4.11334L 4.008,4.11334C 1.792,4.11334 0,2.27332 0,0L 0,4.11334 Z M 140,4.11334L 135.957,4.11334C 138.192,4.11334 140,4.11334 140,0L 140,4.11334 Z " /> 
    <Border Grid.Column="2" CornerRadius="0, 10, 0, 0" Background="#FFFFFFFF" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
    </Grid> 

而这里的结果图像:

enter image description here

+0

+1我喜欢这个想法,但有些应用程序添加按钮到窗口栏。这个按钮在这个解决方案中仍然是不可见的。 – dowhilefor 2012-03-17 16:12:16

+0

@dowhilefor优秀点。如果它出现,我可能必须在将来解决这个问题。如果不是的话,我会放弃它:P – sammarks 2012-03-17 16:24:24

+0

是的,他们看起来比我的好。我需要学习这一点。你用什么wpf xaml等?我是这个技术人员的新手,但自从VB6以来,我擅长其他方面的工作。需要赶上休息。 – 2012-03-17 17:05:32