Fragen zu WPF

  • WPF

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von jedijaeger.

    Fragen zu WPF

    Hallo Leute,
    ich habe nun lange mit VB.NET programmiert und möchte mich nun an WPF ranwagen. Ich hab schon die Grundprinzipien verstanden, denke ich. Ich habe dennoch ein paar Fragen:
    1. Ist es richtig ein Dictionary für alle ControlStyles anzulegen ?
    2. Wie Style ich die Form richtig ? Sprich eine Art Metro Style, in WinForms hab ich das schon geschafft. Könnte ich WPF und WinForms vermischen wenn das in WPF alleine zu schwer wäre ?
    3. Wo finde ich Styling Tutorials zu allen Controls ?
    4. Ist das hier schön geschrieben oder hätte ich da etwas besser oder anders machen sollen/können:
    Spoiler anzeigen

    Quellcode

    1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    3. xmlns:local="clr-namespace:MovieManager">
    4. <Style x:Key="CustomButtonStyle" TargetType="{x:Type Button}">
    5. <Setter Property="Cursor" Value="Hand" />
    6. <Setter Property="Foreground" Value="SteelBlue" />
    7. <Setter Property="Background" Value="#404040" />
    8. <Setter Property="HorizontalContentAlignment" Value="Center" />
    9. <Setter Property="VerticalContentAlignment" Value="Center" />
    10. <Setter Property="Template">
    11. <Setter.Value>
    12. <ControlTemplate TargetType="{x:Type Button}">
    13. <Border CornerRadius="3" BorderBrush="SteelBlue" BorderThickness="2" >
    14. <Grid Background="{TemplateBinding Background}">
    15. <ContentPresenter x:Name="ContentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
    16. </Grid>
    17. </Border>
    18. <ControlTemplate.Triggers>
    19. <EventTrigger RoutedEvent="MouseEnter">
    20. <BeginStoryboard>
    21. <Storyboard>
    22. <ColorAnimation Duration="0:0:0.2" To="SteelBlue" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" />
    23. <ColorAnimation Duration="0:0:0.2" To="WhiteSmoke" Storyboard.TargetProperty="(Button.Foreground).(SolidColorBrush.Color)" />
    24. </Storyboard>
    25. </BeginStoryboard>
    26. </EventTrigger>
    27. <EventTrigger RoutedEvent="MouseLeave">
    28. <BeginStoryboard>
    29. <Storyboard>
    30. <ColorAnimation Duration="0:0:0.2" To="#404040" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" />
    31. <ColorAnimation Duration="0:0:0.2" To="SteelBlue" Storyboard.TargetProperty="(Button.Foreground).(SolidColorBrush.Color)" />
    32. </Storyboard>
    33. </BeginStoryboard>
    34. </EventTrigger>
    35. </ControlTemplate.Triggers>
    36. </ControlTemplate>
    37. </Setter.Value>
    38. </Setter>
    39. </Style>
    40. </ResourceDictionary>



    Ich danke schon ein mal im Vorraus :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xd-franky-5“ ()

    Du kannst mit NuGet deinem Projekt MahApps hinzufügen

    damit kannst du die Oberfläche aufhübschen...ist einfach zu bedienen und steht auch auf GitHub zur Verfügung...und es gibt ne Doku

    [edit, offtopic] der zweite Link in deinem "meine Projekte" ist zum minecraftmultiserver verlinkt und nicht zum homestream
    Das ist jedoch komplett anders als in WinForms, Controls sind generell komplett anders als in WinForms (in WPF hat ein Control kein Aussehen, sondern nur eine Funktion. Es gibt für alle Controls Standardstyles, aber man auch einfach seinen eigenen Style nehmen).

    1. Ja, alles andere wäre mist (wo willst du es denn sonst hinschreiben?)
    2. Kannst ja mal gucken, wie MahApps das gemacht hat: github.com/MahApps/MahApps.Met…o/Themes/MetroWindow.xaml
    3. Haha, so einfach ist das nicht :D es gibt nicht einfach zu allem Tutorials, was dir genau das zeigt, was du willst. Du musst verstehen, was Styles, Templates, Storyborads, Triggers, etc. sind und wie man sie benutzt, dann ist es ganz einfach für jedes beliebige Control einen Style zu erstellen
    4. Joa, sieht nicht schlecht aus, ist ja schonmal ein Anfang. Ich kann dir auf jeden Fall XAML Styler empfehlen, das formatiert deinen XAML Code korrekt und macht ihn somit wesentlich besser lesbar: (Nun gut, bei den 3 Zeilen macht das nicht den riesigen Unterschied, aber XAML kann schnell unübersichtlich werden):
    Spoiler anzeigen

    XML-Quellcode

    1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    3. xmlns:local="clr-namespace:MovieManager">
    4. <Style x:Key="CustomButtonStyle" TargetType="{x:Type Button}">
    5. <Setter Property="Cursor" Value="Hand" />
    6. <Setter Property="Foreground" Value="SteelBlue" />
    7. <Setter Property="Background" Value="#404040" />
    8. <Setter Property="HorizontalContentAlignment" Value="Center" />
    9. <Setter Property="VerticalContentAlignment" Value="Center" />
    10. <Setter Property="Template">
    11. <Setter.Value>
    12. <ControlTemplate TargetType="{x:Type Button}">
    13. <Border BorderBrush="SteelBlue"
    14. BorderThickness="2"
    15. CornerRadius="3">
    16. <Grid Background="{TemplateBinding Background}">
    17. <ContentPresenter x:Name="ContentPresenter"
    18. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
    19. VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
    20. </Grid>
    21. </Border>
    22. <ControlTemplate.Triggers>
    23. <EventTrigger RoutedEvent="MouseEnter">
    24. <BeginStoryboard>
    25. <Storyboard>
    26. <ColorAnimation Duration="0:0:0.2"
    27. Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
    28. To="SteelBlue" />
    29. <ColorAnimation Duration="0:0:0.2"
    30. Storyboard.TargetProperty="(Button.Foreground).(SolidColorBrush.Color)"
    31. To="WhiteSmoke" />
    32. </Storyboard>
    33. </BeginStoryboard>
    34. </EventTrigger>
    35. <EventTrigger RoutedEvent="MouseLeave">
    36. <BeginStoryboard>
    37. <Storyboard>
    38. <ColorAnimation Duration="0:0:0.2"
    39. Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
    40. To="#404040" />
    41. <ColorAnimation Duration="0:0:0.2"
    42. Storyboard.TargetProperty="(Button.Foreground).(SolidColorBrush.Color)"
    43. To="SteelBlue" />
    44. </Storyboard>
    45. </BeginStoryboard>
    46. </EventTrigger>
    47. </ControlTemplate.Triggers>
    48. </ControlTemplate>
    49. </Setter.Value>
    50. </Setter>
    51. </Style>
    52. </ResourceDictionary>
    Mfg
    Vincent

    Hm danke für das verbessern erstmal. Den Styler kann ich mit meiner VS Version nicht benutzen. Und die Form von MahApps ist mir zu kompliziert :D Gibts da nicht was einfacheres, muss ja nur ein ganz schlichtes Metroform sein ohne Effekte. Trotzdem danke :)
    Du benutzt eine IDE die älter als VS 2010 ist?!

    Sonst kannst du ja mal hier gucken: 3water.wordpress.com/2013/02/16/metro-style-window-in-wpf/ oder codeproject.com/Articles/89744…th-WPF-MVVM-XAML-Template
    das MetroWindow von MahApps ist in der Tat sehr komplex aufgebaut
    Mfg
    Vincent