DataTrigger funktioniert nicht, wenn er dynamisch erstellt wirdC#

Ein Treffpunkt für C#-Programmierer
Guest
 DataTrigger funktioniert nicht, wenn er dynamisch erstellt wird

Post by Guest »

Nachdem ich mein letztes Problem gelöst habe: Problem mit der Darstellungsleistung von ExpandoObject Datagrid
Jetzt habe ich ein Problem mit meinem DataTrigger, den ich dynamisch erstellt habe. Laut Code scheint es in Ordnung zu sein, aber es funktioniert nicht. Der DataTrigger überprüft, ob der Wert der Spalte „Spec_X“ oder „Spec_Y“ wahr oder falsch ist. Wenn True, ist der Vordergrund des TextBlocks „FireBrick“.
Hier ist mein Code:

Code: Select all

Binding Binding_X = new Binding();
Binding_X.Path = new PropertyPath("X" + int.Parse(Test_Num["Test_Num"].ToString()));

Binding Binding_Y = new Binding();
Binding_Y.Path = new PropertyPath("Y" + int.Parse(Test_Num["Test_Num"].ToString()));

DataGridTextColumn Column_X = new DataGridTextColumn
{
Header = "X",
Binding = Binding_X,
Width = 50,
SortMemberPath = "X" + int.Parse(Test_Num["Test_Num"].ToString())
};

Style columnStyle_X = new Style(typeof(TextBlock));
DataTrigger Trigger_X = new DataTrigger();
Trigger_X.Binding = new Binding("Spec_X" + int.Parse(Test_Num["Test_Num"].ToString()));
Trigger_X.Value = True;
Trigger_X.Setters.Add(
new Setter(
TextBlock.ForegroundProperty,
new SolidColorBrush(Colors.Firebrick)));
columnStyle_X.Triggers.Add(Trigger_X);
Column_X.ElementStyle = columnStyle_X;

DataGridTextColumn Column_Y = new DataGridTextColumn
{
Header = "Y",
Binding = Binding_Y,
Width = 50,
SortMemberPath = "Y" + int.Parse(Test_Num["Test_Num"].ToString())
};

Style columnStyle_Y = new Style(typeof(TextBlock));
DataTrigger Trigger_Y = new DataTrigger();
Trigger_Y.Binding = new Binding("Spec_Y" + int.Parse(Test_Num["Test_Num"].ToString()));
Trigger_Y.Value = True;
Trigger_Y.Setters.Add(
new Setter(
TextBlock.ForegroundProperty,
new SolidColorBrush(Colors.Firebrick)));
columnStyle_Y.Triggers.Add(Trigger_Y);
Column_Y.ElementStyle = columnStyle_Y;
Ich habe meine DataTable gefüllt und die Standardansicht an das DataGrid gebunden.

Code: Select all

foreach (DataRow dt in main.Table_performance_AVG.Rows)
{
DataRow row = List_Table_Performance_Data[i].NewRow();

row["Recipe"] = list_recipe.Any() == false ? dt["Recipe_Name"].ToString() : "";
row["Date"] = ((DateTime)dt["Date"]).ToString("M/d/yyyy HH:mm:ss").ToString();
row["X" + dt["Test_Num"].ToString()] = dt[i + count].ToString() == "-99999" ? null : (double?)dt[i + count];
row["Y" + dt["Test_Num"].ToString()] = dt[i + 1 + count].ToString() == "-99999" ? null : (double?)dt[i + 1 + count];
row["Spec_X" + dt["Test_Num"].ToString()] = True;
row["Spec_Y" + dt["Test_Num"].ToString()] = True;

Table_Performance_Data.Rows.Add(row);
}

DataGrid.ItemsSource = Table_Performance_Data.DefaultView;
Bearbeiten: Mehr Code hinzufügen
hier ist mein DataGrid:

Code: Select all






Ich füge einige Spalten dynamisch hinzu (siehe den ersten Code)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post