2017-01-10 7 views
0

Я пытаюсь добавить триггеры в WPF DataTemplate, который я буду использовать в качестве шаблона ячейки в своем DataGrid. Мне нужно сделать это программно, так что все это в коде. Я хочу, чтобы граница была выделена, когда вы наводили на нее курсор, но, похоже, она не работает.C# WPF - стиль Триггеры не работают в коде за

DataTemplate dt = new DataTemplate(); 

// other implementation 

Trigger t1 = new Trigger() { Property = IsMouseOverProperty, Value = true }; 
t1.Setters.Add(new Setter(BorderBrushProperty, System.Windows.Media.Brushes.Black)); 
t1.Setters.Add(new Setter(BorderThicknessProperty, new Thickness(4.0))); 
dt.Triggers.Add(t1); 

// add to visual tree, and other logic that works perfectly. 

Единственное, что не работает, это триггер. Он не выделяет границу, когда я курсирую над ячейками. Что не так?

ответ

0

Вы должны указать элементы, которые работают Trigger и Setters.

Установите SourceName свойство Trigger и TargetName из инкубационных:

var dt = new DataTemplate(); 

var t1 = new Trigger() 
{ 
    SourceName = "source", 
    Property = IsMouseOverProperty, 
    Value = true 
}; 

t1.Setters.Add(new Setter(BorderBrushProperty, Brushes.Black, "target")); 
t1.Setters.Add(new Setter(BorderThicknessProperty, new Thickness(4.0), "target")); 
dt.Triggers.Add(t1);