Ich habe eine DataGrid
, die automatisch generiert ihre Spalten mit einem DataTable
in Code. Ich muss eine Hintergrundfarbe einer Zeile ändern, wenn Spalte X den Wert FALSE
oder was auch immer haben. Kann ich es mit AutoGeneratingColumn="OnAutoGeneratingColumn"
eventargs tun? Wenn nicht, wie kann ich den Style einer Zeile ändern, indem Sie vielleicht DataTriggers
auf den Spaltenwert zugreifen und die Hintergrundfarbe der Zeile beeinflussen?DataTriggers basierend auf Spalte Name und seinen Wert in WPF
EDIT 1: Frage: Wie kann ich die Hintergrundfarbe einer Zeile basierend auf einem Wert auf einer Spalte ändern?
EDIT 2: Basierend auf Spalten Ereignis generieren kann ich dies tun:
EDIT 3: Codierung
public static void OnAutoGeneratingColumn(object sender, System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
{
try {
if (e.PropertyType == typeof(System.DateTime) && e.Column.Header.ToString() != "Data de Registo")
(e.Column as System.Windows.Controls.DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
if (e.PropertyType == typeof(System.DateTime) && e.Column.Header.ToString() == "Data de Registo")
(e.Column as System.Windows.Controls.DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy HH:mm:ss";
if (e.Column.Header.ToString() == "FT")
{
StringReader stringReader = new StringReader("<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\""
+ " TargetType=\"{x:Type DataGridCell}\">"
+ " <Setter Property=\"Background\" Value=\"Red\"/>"
+ " </Style>");
XmlReader xmlReader = XmlReader.Create(stringReader);
Style style = (Style)System.Windows.Markup.XamlReader.Load(xmlReader);
e.Column.CellStyle = style;
}
}
catch (Exception) { }
}
Also änderte ich die Hintergrundfarbe einer Spalte (seine Zellen), aber was ich will, ist Überprüfen Sie den Wert für jede Zeile und rot, wenn Wert X oder grün, wenn Wert Y.
Nein ... überhaupt nicht. – int3
Entschuldigung entfernt ... das war nicht geplant hier zu sein :-) – Fruchtzwerg