Keine Styles der Controlbox mit MahApps Metro

  • WPF

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Keine Styles der Controlbox mit MahApps Metro

    Hallo,

    habe mich mal ein wenig mit WPF befasst und versucht das MahApps.Metro-Design zu installieren, nachdem ich mein Grundlayout angelegt habe.
    Soweit funktioniert auch alles einwandfrei, nur werden mir die Controlboxen nicht im entsprechenden Style angezeigt :( (siehe Anhang)

    Aus der offiziellen Doku geht leider nichts dergleichen hervor, laut der Doku sollte alles den entsprechenden Style haben.

    MainWindow.xaml
    Spoiler anzeigen

    XML-Quellcode

    1. ​<Controls:MetroWindow x:Class="MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:EssensplanerWpf"
    7. xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    8. mc:Ignorable="d"
    9. Title="Essensplaner 2019" Height="450" Width="800">
    10. <Grid>
    11. <Grid.ColumnDefinitions>
    12. <ColumnDefinition Width="2*"/>
    13. <ColumnDefinition Width="8*" />
    14. </Grid.ColumnDefinitions>
    15. <Grid.Children>
    16. <ListBox Name="lbRestaurant" Grid.Column="0">
    17. </ListBox>
    18. <Grid Grid.Column="1">
    19. <Grid.RowDefinitions>
    20. <RowDefinition Height="7*" />
    21. <RowDefinition Height="3*" />
    22. </Grid.RowDefinitions>
    23. <Grid.Children>
    24. <Grid Grid.Row="0">
    25. <Grid.ColumnDefinitions>
    26. <ColumnDefinition Width="2*" />
    27. <ColumnDefinition Width="8*" />
    28. </Grid.ColumnDefinitions>
    29. <Grid.Children>
    30. <ListBox Name="lbKategorie" Grid.Column="0">
    31. <ListBoxItem>test</ListBoxItem>
    32. <ListBoxItem>test</ListBoxItem>
    33. <ListBoxItem>test</ListBoxItem>
    34. <ListBoxItem>test</ListBoxItem>
    35. <ListBoxItem>test</ListBoxItem>
    36. </ListBox>
    37. <DataGrid Name="dgSPeise" Grid.Column="1"></DataGrid>
    38. </Grid.Children>
    39. </Grid>
    40. <Grid Grid.Row="1">
    41. <Grid.RowDefinitions>
    42. <RowDefinition Height="4*"/>
    43. <RowDefinition Height="6*" />
    44. </Grid.RowDefinitions>
    45. <Grid.Children>
    46. <StackPanel Grid.Row="0" Orientation="Horizontal">
    47. <StackPanel.Children>
    48. </StackPanel.Children>
    49. </StackPanel>
    50. <DataGrid Grid.Row="1">
    51. </DataGrid>
    52. </Grid.Children>
    53. </Grid>
    54. </Grid.Children>
    55. </Grid>
    56. </Grid.Children>
    57. </Grid>
    58. </Controls:MetroWindow>


    Application.xaml
    Spoiler anzeigen

    XML-Quellcode

    1. ​<Application x:Class="Application"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:local="clr-namespace:EssensplanerWpf"
    5. StartupUri="MainWindow.xaml">
    6. <Application.Resources>
    7. <ResourceDictionary>
    8. <ResourceDictionary.MergedDictionaries>
    9. <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
    10. <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
    11. <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" />
    12. <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
    13. </ResourceDictionary.MergedDictionaries>
    14. </ResourceDictionary>
    15. </Application.Resources>
    16. </Application>


    Ich bin für jede Hilfe oder Denkanstöße dankbar :)

    Grüße
    Bilder
    • {22D100BC-E8DE-4FA7-8F7D-B9ABDE7D080E}.png.jpg

      21,21 kB, 803×455, 32 mal angesehen
    Hallo @KingLM97

    Was genau meinst du mit ControlBox?? Die gibt es als Control nicht. Meinst du eine CheckBox?
    Du hast hier in deinem View nur ListBoxItem's.
    Und ListBoxItems werden per Standard immer als reiner Text (In einem TextBlock) gerendert.

    Die musst du selbst "Designen" was in der WPF aber super einfach geht. Schau dir mal von meiner Tutorialreihe das Kapitel Videocast: Style, Templates und Trigger an.
    Das ist genau das was du dafür brauchst. Aber ich weis eben nicht genau ob ich mit meiner Vermutung richtig liege.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Guten Abend @Nofear23m

    Nein, was ich meine ist in jedem Fenster die drei Buttons "Schließen", "Minimieren" und "Maximieren". Mir ist nicht bekannt, wie ich das sonst nennen soll, außer ControlBox.

    Danke.
    Ahh, OK. Sorry.

    Ja, hätte ich auch genauer lesen/schaun können. Mein Fehler.

    Ich habe diese MahMetro Dingens erst einmahl verwendet aber laut Doku muss das Window auf von MetroWindow erben. Sprich in der CodeBehind!!
    Es reicht somit nicht nur im XAML <Controls.MetroWindow ... als Tag zu verwenden sondern in der CodeBehind auch:


    You’ll also need to modify the MainWindow.xaml.cs file so that the base class for MainWindow matches the MetroWindow class of the XAML file.


    VB.NET-Quellcode

    1. Public Class MainWindow
    2. Inherits MetroWindow
    3. End Class


    Hast du das?
    Ich hoffe dann klappt es.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Nochmal

    Dann sollte es eigentlich passen. Das einzige was mit noch auffällt wäre das du die Resource "Colors.xaml" nicht eingebunden hast.
    Ich kann das morgen mal versuchen nachzustellen.

    Sei so gut und versuche aber noch folgendes.
    Pack irgendeine andere Resource noch mit in die Application.xaml.

    z.b.

    XML-Quellcode

    1. <Style TargetType="Rectangle">
    2. <Setter PRoperty="Fill" Value="White"/>
    3. </Style>


    Ich hab da einen Verdacht. Ansonsten werde ich das morgen mal versuchen nachzustellen, wei aber leider nicht wann genau ich dazu komme da morgen ein Filmteam bei und in der Firma ist und ich muss mit denen mitgehen ?( .

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    OK, jetzt hats mich doch interessiert und ich habs gleich mal versucht.

    Funzt bei mir tadellos.
    Jetzt fängt es an. Welches NuGet Paket hast du gezogen und welche Version?
    Welche .Net Version verwendest du?

    Ich habs einfach per Copy&Paste von dem von dir geposteten Link gemacht. Also XAML und Inherit MetroWindow.

    Schon passte alles und das Fenster sieht aus wie gewünscht.

    MOMENT!! Jetzt hab ichs. Du hast die falschen Resourcen kopiert.

    Das hier:

    XML-Quellcode

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


    Ist für ältere Versionen der Metro Assembly. Ab 2.0 musst du das Theme angeben:

    XML-Quellcode

    1. <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />

    Das sollte es nun gewesen sein.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    So hatte ich es am Anfang auch, hat aber auch nicht funktioniert, siehe Anhang.
    Da es nicht funktioniert habe, hatte ich den Code von dieser Seite probiert. Was eben zu diesem Thread dann geführt hat :D

    Ich verwende MahApps.Metro 1.6.5, installiert via NuGet.
    Bilder
    • Anmerkung 2019-01-16 083823.jpg

      118,17 kB, 1.481×304, 24 mal angesehen
    Update:

    NuGet installiert Version 1.6.5.
    In der Doku wird immer von Version 2.0 gesprochen, welche man eben nicht über NuGet bekommt.
    Demzufolge muss man sich an diese Seite halten und alles funktioniert.

    KingLM97 schrieb:

    In der Doku wird immer von Version 2.0 gesprochen, welche man eben nicht über NuGet bekommt.

    Wenn man das NuGet-Paket in die Console kopiert, wie in der Doku beschrieben mit dem Schalter -Pre dann schon.
    Kannst du auch über die GUI indem du Vorabversionen mit einbeziehst.



    Dann bist du auch am letzten Stand und kannst das neue Themesystem verwenden.
    Aber gut das es mal funktioniert.

    Grüße
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##