2016-08-08 83 views
0

我有惱人的Windows 10設備和Windows 7設備之間的外觀差異。WPF:Windows 7與Windows 10外觀

我正在使用WindowStyle="None"DockPanel直接在我的Window元素內。

我不明白爲什麼仍然有邊框?爲什麼按鈕,文本框,組合框等上的邊界是圓形的?

看來這與Aero有關。有沒有辦法阻止我的應用程序使用Aero?我假設有另一個與Windows 10相關的表示框架,但不知道它是如何強制它的。

BorderBrush解決這個最簡單的方法?

<Window x:Class="CBD.Presentation.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:CBD.Presentation" 
     Title="CBD" Height="760" Width="944" WindowStartupLocation="CenterScreen" 
     WindowStyle="None" SizeChanged="Window_SizeChanged" MinWidth="944" MinHeight="760" 
     Icon="favicon.ico"> 
    <DockPanel x:Name="Root_Window" Background="Black"> 
     <!--Application stuff here --> 
    </DockPanel> 
</Window> 

Windows 7中顯示: Windows 7 Display

的Windows 10顯示:

Windows 10 Display

一切仍然正常工作,但這樣的一些文本框和按鈕設置,字母部分丟失。

+1

我會看看這個,大量的無邊框窗口信息的:HTTP:/ /stackoverflow.com/questions/611298/how-to-create-a-wpf-window-without-a-border-that-c​​an-be-resized-via-a-grip-only – Joe

+0

關於彎曲的邊緣,我猜這是因爲它根據操作系統選擇不同的主題。你在爲這些組件定義樣式嗎? – Joe

+0

我一直使用Mahapps.Metro,以及一些修改,用於漂亮的窗口,以及應用程序之間的一致樣式。或者是最近的WPF材質設計。 – Joe

回答

1

我認爲這些都是很多人在真正開始定製應用程序樣式時偶然會遇到的問題。這裏也有一些完善的快捷鍵這兩個問題,如使用現有的風格/庫WPF:

有幾個常見的窗口和樣式庫我看到:

  • MahApps.Metro是我用過的一個偉大的圖書館很長時間才能獲得乾淨的窗戶和界面(特別是某些客戶喜歡的'黑暗'主題)。
  • Modern UI。一點個人經驗,但它是相似的,它有更現代化的窗口設計,以及一個大樣式集。我見過它經常使用。
  • Elysium。再次,沒有太多的經驗,但似乎活躍。我沒有看到它和其他兩個一樣多。

這些,當然,包括很多其他地鐵主題。還有其他主題包可用,我發現Material Design In XAML Toolkit很好,如果客戶想要現代設計的前沿(也可以從Google獲得認可)。

它看起來像你從頭開始你的風格,但上述可能仍然是有用的,你只需要用於Windows。如果你想親自去看看,有很多的回答here

對於彎角來說,正如評論中所討論的那樣,這是WPF在不同操作系統上默認行爲的結果。它試圖選擇一種默認樣式來與當前操作系統融合得最好。對於大多數只使用默認主題的應用程序而言,這通常不重要。

當你自己對所有東西進行造型時,它確實會對你手動配置的東西造成破壞,因爲一些與你設置的主題相配的屬性可能會不同 - 就像圓角一樣。

有兩種選擇。

  1. 顯式設置所有屬性,所以它看起來完全是你想要的。這樣做意味着即使「基礎」主題發生變化,它仍然看起來不錯。這就是上面這些圖書館如何做的事情 - 他們完全定義了一種風格。問題是你將不得不手動測試不同的主題,這是一個工作。
  2. 手動設置基本主題。 (也可以用於選項1中的測試!)您可以手動覆蓋應用程序使用的主題,而不是讓它使用操作系統的默認設置,方法與應用其他自定義主題或使用其他自定義主題相同:
<App.Resources> 
    <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, 
     Culture=neutral, PublicKeyToken=31bf3856ad364e35, 
     ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml"/> 
</App.Resources> 

出於某種原因,除非在引號包裹上面會不會出現代碼...