/ / La finestra di WPF ha colori diversi in VS designer rispetto al debug? - c #, wpf, xaml, mahapps.metro

La finestra WPF ha colori diversi nella progettazione VS rispetto a quando si esegue il debug? - c #, wpf, xaml, mahapps.metro

Il colore di sfondo della finestra di WPF è bianco durante la progettazione in Visual Studio, ma quando eseguo il debug dell'applicazione, è invece nero. Perché?

Ecco il mio codice .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>

Colori nel designer Colori durante la corsa

risposte:

2 per risposta № 1

Guarda la tua App.xaml File.

Se contiene:

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

Sostituirlo con:

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

Spiegazione

Il tuo App.xaml è il punto di ingresso per il tuo programma e verrà applicatole impostazioni di stile per ogni finestra / pagina / controllo di ogni bambino, ma spesso VS Designer non può caricare tutte le risorse in modalità progettazione. Quindi in VS sarà bianco di default e quando si esegue l'applicazione si applicano completamente gli stili.

MahApps utilizza 2 predefiniti modelli di stile per windows:

"BaseLight", "BaseDark"


analisi

Certo se non è nel App.xaml puoi verificarlo con ThemeManager.DetectAppStyle(this); nel tuo debug del Costruttore MetroWindow.

O sovrascrivi il tuo App.xaml.cs il OnStartup() Methode in questo modo:

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);
}
}

AGGIORNARE

Dopo che ci hai detto che non c'è App.xaml Punto di ingresso nell'applicazione il problema è chiaro. MahApps richiede alcuni dizionari di risorse, come puoi leggere su Guida Rapida.

Penso nel tuo caso ti mancano solo gli stili per MahApps. Quindi aggiungi, dopo il tuo <Controls:MetroWindow> Tag che segue:

<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>