none
Problem mit Color Converter RRS feed

  • Frage

  • Hallo ich habe eine Page und möchte in einen Datengrid einen Wert Rot färben wenn er 30 tage vor Ablauf steht. Dazu habe ich einen ColorConverter gefunden der eigentlich funktionieren sollte. Problem ist für die Zeile wo ich den Anwende kommt nur Weiß. Und keine Schrift.

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Data;
    
    namespace Autos.Pages
    {
        public class MyColorConverter: IValueConverter
        {
            #region IValueConverter Members
    
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                aBm drv = value as aBm;
                DateTime dt30 = DateTime.Today.AddDays(-30);
                if (drv != null)
                {
                    if (drv.WTagNext  >= dt30) //Wenn größer 30 Tage.
                        return Brushes.Red;
                }
                return DependencyProperty.UnsetValue;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
    
            #endregion
        }
    }
    
    <DataGridTemplateColumn Header="Prüfungstag">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding PTagNext, StringFormat=\{0:dd.MM.yy\}}"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                    <DataGridTemplateColumn.CellEditingTemplate>
                                        <DataTemplate>
                                            <DatePicker SelectedDate="{Binding PTagNext}"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellEditingTemplate>
                                    <DataGridTemplateColumn.CellStyle>
                                        <Style TargetType="{x:Type DataGridCell}">
                                            <Setter Property="Background" Value="{Binding Converter={StaticResource ColorCvrt}}"/>
                                        </Style>
                                    </DataGridTemplateColumn.CellStyle>
                                </DataGridTemplateColumn>

    <Page.Resources>
            <local:MyColorConverter x:Key="ColorCvrt"/>
    </Page.Resources>

    Wenn ich bei Value ="Red" schreibe macht es schön alle Zeilen Rot. Ich glaube irgendwas stimmt am Rückgabewert nicht. Wäre schön wenn ihr mir wieder helfen könntet :(
    Mittwoch, 30. November 2016 19:26

Antworten

  • Problem gefunden.

    ich hatte using System.Drawing drin. Brauche aber für Brushes System.Windows.Media Sprich hab Drawing im using gelöscht und System.Windows.Media eingefügt und es funktioniert

    • Als Antwort markiert MietzeTatze Mittwoch, 30. November 2016 21:13
    Mittwoch, 30. November 2016 21:13

Alle Antworten

  • Hallo,

    um zu überprüfen ob ein Konverter funktioniert eignet es sich häufig BreakPoints zu setzen bzw. im Konverter einige Debug.WriteLine Ausgaben zu machen. Eben das übliche Anwendungsdebugging.

    Ich habe deinen Code zum Testen in ei  neues Projekt kopiert und alles passend ergänzt. Ich kann da keine Probleme feststellen:

    Kannst du uns vielleicht ein kleines, nicht funktionierendes Testprojekt bereit stellen in dem wir den Fehler finden können?

    Ansonsten: an dem von dir gezeigten Code scheint es schon mal nicht zu liegen.

    PS: Ins blaue geraten: Die Setter im Style funktionieren nur wenn du den Wert nicht irgendwo fest überschrieben hast. Es geht also nicht irgendwo eine Farbe festzulegen und dann zu versuchen diese per Setter zu überschreiben.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 30. November 2016 20:34
    Moderator
  • Problem gefunden.

    ich hatte using System.Drawing drin. Brauche aber für Brushes System.Windows.Media Sprich hab Drawing im using gelöscht und System.Windows.Media eingefügt und es funktioniert

    • Als Antwort markiert MietzeTatze Mittwoch, 30. November 2016 21:13
    Mittwoch, 30. November 2016 21:13