2017-01-10 9 views
0

DataGrid에서 셀 템플릿으로 사용할 WPF DataTemplate에 트리거를 추가하려고합니다. 이 작업을 프로그래밍 방식으로 수행해야하므로 모든 코드가 뒤 따릅니다. 테두리 위에 마우스를 가져 가면 테두리가 강조되기를 원하지만 작동하지 않는 것 같습니다.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

TriggerSetters이 작동하는 요소를 지정해야합니다.

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); 
:

은 트리거의 SourceName 속성과 세터의 TargetName 설정