DataTrigger не работает при динамическом созданииC#

Место общения программистов C#
Ответить
Anonymous
 DataTrigger не работает при динамическом создании

Сообщение Anonymous »

После решения моей последней проблемы: проблемы с рендерингом ExpandoObject Datagrid
теперь у меня возникла проблема с моим DataTrigger, который я создал динамически. Вроде бы все в порядке с кодом, но не работает. DataTrigger проверяет, является ли значение столбца «Spec_X» или «Spec_Y» истинным или ложным. Если это правда, передний план TextBlock будет «FireBrick».
Вот мой код:
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;

Я заполнил свою таблицу данных и привязал представление по умолчанию к DataGrid.
foreach (DataRow dt in main.Table_performance_AVG.Rows)
{
DataRow row = List_Table_Performance_Data.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;


Подробнее здесь: https://stackoverflow.com/questions/793 ... ynamically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»