Hintergrundfarbe zur Laufzeit ändern Listview.Item

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von jmueller.

    Hintergrundfarbe zur Laufzeit ändern Listview.Item

    Hallo an alle,

    ich arbeite mich gerade in das Thema WPF ein.
    Bisher habe ich einige Projekte in Win Forms realisiert.

    Nun zu meinem ersten Problem.
    Zur Laufzeit schreibe ich mehrere Zahlen(aus einem Textfile) in ein Listview.
    Danach möchte ich je nach Zustand den Zahlen insgesamt drei Hintergrundfarben zuordnen (rot,gelb,grün).
    Leider gibt es ja die Eigenschaft Listview.SelectedItem.Backgrund so nicht bei WPF.

    Irgendwie steh ich da völlig auf dem Schlauch.
    Ich denke das geht nur über Databinding?

    im Mainwindow.xaml gibt es ja den Setter:
    <Setter Property="Background" Value="Green" />
    nur möchte ich den hintergrund einzelner Items unterschiedlich (je nach zustand) gestalten.

    Wäre super nett wenn mir da jemand auf die Sprünge helfen könnte.

    Viele Grüße Jörg
    Hallo und Willkommen mit Forum.

    Der umstieg von Winforms ist nicht einfach und erfordert etwas Disziplin. In der Welt der WPF funktioniert alles über Binding was aber ein absolut geniales Konzept ist wenn man es verstanden hat.
    In meiner Signatur ist meine Tutorialreihe. Schau dir diese mal an um die WPF erstmal zu verstehen und verabschiede dich so schnell als möglich von CodeBehind ala WinForms, je früher desto leichter wird der Umstieg.

    In deinem Fall brauchst du auf jeden Fall mal ein ItemTemplate für deine ListView. Hierfür gibt es ein Kapitel "DataTemplates".

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

    vielen Dank für die nette Bgrüßung und deine Tipps.
    Ich werd mir mal deineTutorials anschauen.
    Ich hab mir da schon eiiges angesehen zb. abgerundete Buttons
    so hier:

    XML-Quellcode

    1. <Style x:Key="RoundButtonTemplate" TargetType="Button">
    2. <Setter Property="Background" Value="Azure" />
    3. <Setter Property="Foreground" Value="Blue" />
    4. <Setter Property="Template">
    5. <Setter.Value>
    6. <ControlTemplate TargetType="Button" >
    7. <Border CornerRadius="5" Background= "{TemplateBinding Background }" BorderThickness="1">
    8. <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" >
    9. </ContentPresenter>
    10. </Border>
    11. <ControlTemplate.Triggers>
    12. <Trigger Property="IsMouseOver" Value="True" >
    13. <Setter Property="Background" Value="Gray" />
    14. </Trigger>
    15. </ControlTemplate.Triggers>
    16. </ControlTemplate>
    17. </Setter.Value>
    18. </Setter>
    19. </Style>


    und dann so hier angewendet:

    XML-Quellcode

    1. <Button x:Name="exit1"
    2. Style="{StaticResource RoundButtonTemplate }" Margin="640,440,10,10"
    3. Content=" Exit" Click="Button_Click" RenderTransformOrigin="-3.576,-2.04"
    4. Foreground="Black"
    5. ToolTip=" programm beenden"
    6. Background="AntiqueWhite"
    7. />


    Das habe ich soweit verstanden.
    Die daten bekomme ich ja aber erst zur Laufzeit aus einem Textfile und die entscheidung ob rot grün oder gelb fällt erst danach.
    Das findet ja dann im CodeBehind statt.
    Oder bin ich da auf dem Holzweg?

    Gruß Jörg

    *CodeTags eingefügt* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Hallo

    jmueller schrieb:

    Das findet ja dann im CodeBehind statt.
    Oder bin ich da auf dem Holzweg?

    Leider ja. Das wird über Binding gemacht. Alles was man über Binding macht ist um einige flexibler. In der WPF gehen gewisse Dinge erst garnicht über CodeBehind, weshalb ich ja meinte..... Je früher du dich von diesem Konstrukt der CodeBehind verabschiedest, desto besser ist es für dich.

    jmueller schrieb:

    Margin="640,440,10,10"

    Schau dir mal die ersten Kapitel an. Sowas entsteht wenn man den clickibunti Designer nutzt und ist eher suboptimal. Schau dir das an, du kannst mir glauben, so arbeitet es sich viel besser.

    Grüße
    Sascha

    PS: Bitte verwende CodeTags um Code hier einzufügen. Ich korrigiere das jetzt mal für dich.
    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. ##