Wie kann ich bei DataGrid ausgewählte Spalten andersfarbig darstellen mit Alternativ-Farbe?

  • WPF

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

    Wie kann ich bei DataGrid ausgewählte Spalten andersfarbig darstellen mit Alternativ-Farbe?

    Hallo Leute und danke fürs reinschauen...

    Es wäre nett, wenn mir jemand bei meinem Problem helfen würde manch eine Spalte anders zu färben wie die anderen spalten... Das habe ich bis jetzt:

    XML-Quellcode

    1. <UserControl.Resources>
    2. <Converter:StateToStringConverter x:Key="StateToStringConverter"/>
    3. <Converter:State_I_ToStringConverter x:Key="State_I_ToStringConverter"/>
    4. <Style TargetType="{x:Type TextBlock}" x:Key="RightCell">
    5. <Setter Property="HorizontalAlignment" Value="Stretch"/>
    6. <Setter Property="TextAlignment" Value="Right"/>
    7. </Style>
    8. <Style TargetType="{x:Type TextBlock}" x:Key="RightCellYellow">
    9. <Setter Property="HorizontalAlignment" Value="Stretch"/>
    10. <Setter Property="TextAlignment" Value="Right"/>
    11. <Setter Property="Background" Value="LightYellow"/>
    12. </Style>
    13. <Style TargetType="{x:Type TextBlock}" x:Key="RightCellPink">
    14. <Setter Property="HorizontalAlignment" Value="Stretch"/>
    15. <Setter Property="TextAlignment" Value="Right"/>
    16. <Setter Property="Background" Value="LightPink"/>
    17. </Style>
    18. </UserControl.Resources>
    19. <DataGrid x:Name="dMain" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CanUserAddRows="False"
    20. RowHeaderWidth="20" AutoGenerateColumns="False" BorderBrush="#3155AE" BorderThickness="0.6" AlternatingRowBackground="LightBlue" HeadersVisibility="All" EnableColumnVirtualization="True" IsSynchronizedWithCurrentItem="True">
    21. <DataGrid.Columns>
    22. <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True" ElementStyle="{StaticResource RightCell}"/>
    23. <DataGridTextColumn Binding="{Binding Path=Status, Converter={StaticResource StateToStringConverter}}" Header="Status" IsReadOnly="True" ElementStyle="{StaticResource RightCell}"/>
    24. <DataGridTextColumn Binding="{Binding Path=Druckstatus, Converter={StaticResource State_I_ToStringConverter}}" Header="Druckstatus" IsReadOnly="True" ElementStyle="{StaticResource LightYellow}"/>
    25. <DataGridTextColumn Binding="{Binding Path=Konto8400, ConverterCulture='de-DE', StringFormat=N2}" Header="Konto8400" IsReadOnly="True" ElementStyle="{StaticResource RightCellPink}"/>
    26. </DataGrid.Columns>
    27. </DataGrid>


    - Es färbt sich entsprechend, hat aber kein Alternativ-Background...
    - Und das zweite Problem, wie mache ich € Zeichen hinter den Zahlen bei Konto8400?

    Danke euch im Voraus....
    Hallo

    Nagut, dann schalte ich mich doch mal ein.

    EugenIS schrieb:

    Es färbt sich entsprechend, hat aber kein Alternativ-Background

    Bitte erkläre das genauer. So ganz verstehe ich nicht was du willst.

    EugenIS schrieb:

    Und das zweite Problem, wie mache ich € Zeichen hinter den Zahlen bei Konto8400?

    Gebe mal als StringFormat das richtige Format ein. "C"?

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

    Das zweite habe ich bereits gelöst (mit dem €)Zum ersten Problem:Bei DataGrid kannst du die Alternative Farbe eingeben. Mein Problem ist, dass ich diese überschreibe und somit hat er keine alternative Farbe... Sieht so aus:
    Bilder
    • Unbenannt.PNG

      4,15 kB, 342×154, 13 mal angesehen
    Ich setze immer den Cellstyle und nicht den Elementstyle, müsste aber mit dem Elementstyle auch funktionieren:

    XML-Quellcode

    1. <DataGridTextColumn Binding="{Binding Path=Konto, ConverterCulture='de-DE', StringFormat=C2}" Header="Konto8400" IsReadOnly="True">
    2. <DataGridTextColumn.CellStyle>
    3. <Style TargetType="DataGridCell">
    4. <Style.Triggers>
    5. <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="0">
    6. <Setter Property="Background" Value="Green"></Setter>
    7. </DataTrigger>
    8. <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="1">
    9. <Setter Property="Background" Value="Red"></Setter>
    10. </DataTrigger>
    11. </Style.Triggers>
    12. </Style>
    13. </DataGridTextColumn.CellStyle>
    14. </DataGridTextColumn>


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