2012-03-17 111 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