2017-01-10 96 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

您必須指定TriggerSetters運行的元素。

設置觸發的SourceName財產和二傳手的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);