2015-07-01 47 views
1

在Visual Studio中的設計過程中,WPF窗口背景顏色是白色的,但是當我調試應用程序時,它是黑色的。爲什麼?WPF窗口在VS設計器中的顏色與調試時不同?

這裏是我的.xaml代碼:

<Controls:MetroWindow x:Class="XLTT.Views.About" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 

     ShowTitleBar="False" 
     WindowStartupLocation="CenterOwner" 
     ShowCloseButton="False" 
     ResizeMode="NoResize" 
     WindowStyle="ToolWindow" 
     Height="320" 
     Width="400" 
     Title="About" > 


<!-- your content here --> 
<Grid Margin="20"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <TextBlock Name="lblAppName" Margin="10" TextWrapping="Wrap" Text="Application Name :" VerticalAlignment="Stretch" FontSize="24" FontFamily="Segoe UI Light" Foreground="#FFF53800"/> 
    <TextBlock Name="lblBuild" Margin="10" TextWrapping="Wrap" Text="Build :" VerticalAlignment="Top" Grid.Row="1" FontSize="16" FontFamily="Segoe UI Light"/> 
    <TextBlock Name="lblOwner" Margin="10" TextWrapping="Wrap" Text="Owner :" VerticalAlignment="Top" Grid.Row="2" FontWeight="Bold" FontFamily="Segoe UI Light" FontSize="16" /> 
    <TextBlock Name="lblLicense" Margin="10" TextWrapping="Wrap" Text="License" VerticalAlignment="Top" Grid.Row="3" FontWeight="Bold" Foreground="#FFEA1818" FontFamily="Segoe UI Light" FontSize="16" /> 
    <Button Name="btnOk" Content="OK" HorizontalAlignment="Right" Margin="0,0,10,4" VerticalAlignment="Bottom" Width="94" Grid.Row="4" Click="btnOk_Click" Height="40"/> 

</Grid> 

Colors in designer Colors when running

+0

請閱讀我的更新,並嘗試它! – Smartis

回答

2

看看你App.xaml文件。

如果它包含:

<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" /> 

將其替換爲:

<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 

說明

App.xaml是你的程序的將應用該樣式的入口點設置給每個孩子的窗口/ Page/Control,但VS Designer無法在設計模式下加載所有資源。所以在VS中它將默認爲白色,並且在運行時應用程序完全應用這些樣式。

MahApps使用窗口2默認style templates

「Baselight來」, 「BaseDark」


測試

當然,如果它不是在App.xaml你可以在MetroWindow構造器調試中使用ThemeManager.DetectAppStyle(this);進行檢查ING。

或覆蓋在你的App.xaml.csOnStartup()了Methode這樣的:

public partial class App : Application 
{ 
    protected override void OnStartup (StartupEventArgs e) 
    { 
     // get the theme from the current application 
     var theme = ThemeManager.DetectAppStyle(Application.Current); 

     // now set the Green accent and dark theme 
     ThemeManager.ChangeAppStyle(Application.Current, 
            ThemeManager.GetAccent("Blue"), 
            ThemeManager.GetAppTheme("BaseLight")); 

     base.OnStartup(e); 
    } 
} 

UPDATE

你告訴我們,沒有App.xaml入口點在你的應用程序中的問題是明確後。 MahApps需要一些資源字典,你可以在Quick Start Guide上閱讀。

我想你的情況你只是想念MahApps的風格。因此,在您的<Controls:MetroWindow>標記以下內容後添加:

<Controls:MetroWindow.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Controls:MetroWindow.Resources> 
+0

很酷。但是我沒有任何名爲App.xml的文件。當我搜索BaseDark.xaml的解決方案時,VS找不到任何匹配。 – user1283776

+0

什麼是MetroWindow構造函數調試?谷歌搜索不顯示任何好結果。 – user1283776

+0

該文件使用'a'調用'App.xaml'。這不是一個XML文件。 – Smartis

相關問題