2016-07-07 3 views
0

Wie kann ich die ModernUI Hintergrundfarbe (Dunkel/Hell) auf ein UserControl anwenden? Ich habe erfolgreich die Akzent Farbe abgerufen und angewendet, aber ich kann nicht herausfinden, wie Sie die dunkle/helle Hintergrundfarbe anwenden. Standardmäßig ist der Hintergrund meines Benutzersteuerelements transparent.ModernUI: Aktuelles Design auf UserControl anwenden BackGround

Hier ist, wie ich angewandt, um die Akzent Farbe (das funktioniert):

<UserControl x:Class="GenkaiModern.Pages.DetailView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:GenkaiModern.Pages" 
       xmlns:mui="http://firstfloorsoftware.com/ModernUI" 
      mc:Ignorable="d" 

      d:DesignHeight="399.533" d:DesignWidth="751.402" Width="720" Height="350" Background="{DynamicResource Accent}" > 
</UserControl> 

Es könnte einfach sein, aber ich kann nicht herausfinden, wie diese Ressourceneigenschaften verwenden.

jetzt hier die Hauptfenster wich haben das Thema Hintergrund, um es aplied (ich weiß nicht einmal, wie)

<mui:ModernWindow 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mui="http://firstfloorsoftware.com/ModernUI" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="GenkaiModern.MainWindow" 
     Title="Genkai Client" IsTitleVisible="True" 
     LogoData="F1 M 24.9015,43.0378L 25.0963,43.4298C 26.1685,49.5853 31.5377,54.2651 38,54.2651C 44.4623,54.2651 49.8315,49.5854 50.9037,43.4299L 51.0985,43.0379C 51.0985,40.7643 52.6921,39.2955 54.9656,39.2955C 56.9428,39.2955 58.1863,41.1792 58.5833,43.0379C 57.6384,52.7654 47.9756,61.75 38,61.75C 28.0244,61.75 18.3616,52.7654 17.4167,43.0378C 17.8137,41.1792 19.0572,39.2954 21.0344,39.2954C 23.3079,39.2954 24.9015,40.7643 24.9015,43.0378 Z M 26.7727,20.5833C 29.8731,20.5833 32.3864,23.0966 32.3864,26.197C 32.3864,29.2973 29.8731,31.8106 26.7727,31.8106C 23.6724,31.8106 21.1591,29.2973 21.1591,26.197C 21.1591,23.0966 23.6724,20.5833 26.7727,20.5833 Z M 49.2273,20.5833C 52.3276,20.5833 54.8409,23.0966 54.8409,26.197C 54.8409,29.2973 52.3276,31.8106 49.2273,31.8106C 46.127,31.8106 43.6136,29.2973 43.6136,26.197C 43.6136,23.0966 46.127,20.5833 49.2273,20.5833 Z"   
     ContentSource="/Pages/Home.xaml" d:DesignWidth="1070.985" d:DesignHeight="664.851"> 

    <mui:ModernWindow.MenuLinkGroups> 
     <mui:LinkGroup DisplayName="Administration" GroupKey="Administration"> 
      <mui:LinkGroup.Links> 
       <mui:Link DisplayName="Machine" Source="/Pages/NewComputerView.xaml" /> 
       <mui:Link DisplayName="Ecrans" Source="/Pages/Home.xaml"/> 
       <mui:Link DisplayName="Imprimantes" Source="/Pages/Home.xaml" /> 
      </mui:LinkGroup.Links> 
     </mui:LinkGroup> 
     <mui:LinkGroup DisplayName="settings" GroupKey="settings"> 
      <mui:LinkGroup.Links> 
       <mui:Link DisplayName="Application" Source="/Pages/SettingsPage.xaml" /> 
      </mui:LinkGroup.Links> 
     </mui:LinkGroup> 
     <mui:LinkGroup DisplayName="Login" GroupKey="Login"> 
      <mui:LinkGroup.Links> 
       <mui:Link DisplayName="Login" Source="/Pages/AutentificationView.xaml" /> 
      </mui:LinkGroup.Links> 
     </mui:LinkGroup> 
    </mui:ModernWindow.MenuLinkGroups> 

    <mui:ModernWindow.TitleLinks> 
     <mui:Link DisplayName="Administration" Source="/Pages/NewComputerView.xaml" /> 
     <mui:Link DisplayName="Login" Source="/Pages/AutentificationView.xaml" /> 
     <mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" /> 
     <mui:Link DisplayName="help" Source="https://github.com/firstfloorsoftware/mui" /> 
    </mui:ModernWindow.TitleLinks> 

</mui:ModernWindow> 

Von dem, was ich verstehe, da in meiner usercontrole Schrift die Schriftart Thema modernui nehmen, wenn meine Hintergrund war nicht transparent, es hätte die richtige Farbe Äther dunkel/hell seine Prety verwirrend.

Antwort

1

Wenn Sie die Farbe Ihrer Benutzeroberfläche dynamisch ändern möchten, sollten Sie DynamicResource verwenden. Zum Beispiel deckare SolidColorBrush in App.xaml:

<Application.Resources> 
    <SolidColorBrush x:Key="DynamicColor" /> 
</Application.Resources> 

Und in Ihrer Kontrolle sollten Sie die DynamicResource binden durch:

<UserControl x:Class="" 
    <!--The code is omitted for the brevity-->   
    d:DesignHeight="600" d:DesignWidth="800"> 
    <Grid Name="mainGrid" Background="{DynamicResource DynamicColor}">  

    </Grid> 
</UserControl> 

Dann Resource ändern sollten Sie:

Application.Current.Resources["YourResource"] = YourNewValue; 

Lassen Sie mich zeigen ein Beispiel, wie der Wert geändert werden kann:

private void Window_ContentRendered(object sender, EventArgs e) 
{ 
    SolidColorBrush YourBrush = (Brush)(new BrushConverter().ConvertFrom("#455A65"));; 

    // Set the value 
    Application.Current.Resources["DynamicColor"] = YourBrush;   
} 

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    SolidColorBrush YourBrush = Brushes.Orange; 

    // Set the value 
    Application.Current.Resources["DynamicColor"] = YourBrush; 
} 

DynamicResources werden zum Ändern verwendet. Wo ändern - das ist der Wunsch des Entwicklers.

+0

Modernui hat ein Theme-Board, wo Benutzer zu Light/wechseln kann dunkler Hintergrund kann nicht hart codiert werden "# 455A65" seine Bindung an einige dynamische Ressource – Zwan

+0

@Zwan bitte, siehe meine aktualisierte Antwort. Fühlen Sie sich frei, irgendeine Frage zu stellen. – StepUp

+0

haben Hauptwindows Code nichts sehen, rufen Sie dynamisch und es haben Hintergrund gesetzt. + my usercontrol hat bereits die Schriftgröße/Farbe des ausgewählten Themes, es ist nur etwas mit dem Hintergrund, der standardmäßig in der hinzugefügten Ansicht transparent ist. – Zwan

0

Ich habe die FirstFloor-Beispielanwendung durchsucht und festgestellt, dass eine Handvoll DynamicResource-Schlüssel für die Theme-Formatierung verwendet wird. Ich konnte mein Thema Fenster Hintergrundfarbe erhalten, indem Sie diese:

<SolidColorBrush x:Key="BackgroundBrush" Color="{DynamicResource WindowBackgroundColor}" /> 

es dann irgendwo verwenden, wie ...

<DataGrid Background="{StaticResource BackgroundBrush}" /> 

Es gibt andere Dynamic Tasten auch einschließlich

{DynamicResource WindowText} // for WindowForegroundColor 
{DynamicResource WindowBorder} // for WindowBorderBrush 
{DynamicResource WindowBackgroundColor} // for WindowBorderBackgroundBrush 
{DynamicResource DefaultFontFamily} // 
{DynamicResource DefaultFontSize} // 

Ich fand diese durchsuchen den Code von der MUI-Master-Quelle. Für mehr, öffnen Sie mui-master.sln und navigieren Sie zu dem Projekt FirstFloor.ModernUI (Klassenbibliothek) /Themes/ModernWindow.xaml und /Themes/ModernDialog.xaml