| 

.NET C# Java Javascript Exception

4
Hallo Community!

Ich bin langsam am Verzweifeln. Seite Tagen google ich nach einer Lösung, allerdings funktionieren bei mir die dort angebotenen Lösungen nicht.

Das Problem:
Ich habe eine Liste von Daten. Diese Liste erbt von ObservableCollection. Diese Liste ist an ein WPF-DataGrid gebunden, funktioniert auch alles sehr schön.
Nun gibt es eine Spalte, die den Typ eines Records als String angibt. Dieser Typ ("E", "P" oder "C") soll in der DataGrid-Spalte als Farbe angezeigt werden - tut es aber nicht, egal, was ich versuche.

Der aktuelle Lösungsansatz ist:
Die Griddefinition:
<DataGrid Name="dgElements" AutoGenerateColumns="False" ItemsSource="{Binding List, Mode=TwoWay}" SelectionChanged="DataGrid_SelectionChanged" IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="EK">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding EType}" Background="{Binding EType, Converter={StaticResource ElementColorC}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>


Der Converter:
[ValueConversion(typeof(string), typeof(SolidBrush))]
public class ElementColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string type = (value ?? String.Empty).ToString();
SolidBrush brush = new SolidBrush(Color.White);

switch (type)
{
case "E":
brush = new SolidBrush(Color.Green);
break;

case "P":
brush = new SolidBrush(Color.Orange);
break;

case "C":
brush = new SolidBrush(Color.Yellow);
break;
}

return brush;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string result = String.Empty;
SolidBrush brush = (SolidBrush)(value ?? new SolidBrush(Color.White));

if(brush.Color == Color.Green)
result = "E";
else if (brush.Color == Color.Orange)
result = "P";
else if (brush.Color == Color.Yellow)
result = "C";

return result;
}
}


Das Property:
public string EType
{
get { return _eType; }
set
{
if (_eType != value)
{
_eType = value;
OnPropertyChanged("EType");
}
}
}


Mit Breakpoints sehe ich, dass der Converter angesprochen wird und die richtigen Farben auch zurückgegeben werden. Jedoch bleibt der betreffende Zellenhintergrund immer weiß.

Bitte um Hilfe!
News:
17.05.2011
ThomasEParis 155 1 5
kann das sein, dass in der zeile:

<TextBlock Text="{Binding EType}" Background="{Binding EType, Converter={StaticResource ElementColorC}}" />

da hinten irgendwas fehlt (ElementColorConverter?)

kenn mich mit wpf nicht so gut aus.
nabuchodonossor 17.05.2011
+1 für die ausführliche beschreibung des fehlers.
nabuchodonossor 17.05.2011
Nein, da fehlt nichts. Ich habe mir nur gespart, den xmlns inklusive den key darauf auch noch hier einzufügen. Compilieren und Ausführen geht ja, es passiert halt nix.
ThomasEParis 17.05.2011
2 Antworten
1
ich rate jetzt nur mal: wie wäre es mit einem SolidColorBrush?
19.05.2011
nabuchodonossor 1,3k 5
0
Bingo!

Besten Dank für die Hilfe!
19.05.2011
ThomasEParis 155 1 5

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH