C#WPF - 样式触发器不在

时间:2017-01-10 22:36:10

标签: c# wpf triggers styles datatemplate

我正在尝试将触发器添加到WPF DataTemplate,我将在我的DataGrid中将其用作单元格模板。我需要以编程方式执行此操作,因此所有代码都在后面。我希望将鼠标悬停在边框上时突出显示边框,但它似乎不起作用。

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.

唯一不起作用的是这个触发器。当鼠标悬停在单元格上时,它不会突出显示边框。怎么了?

1 个答案:

答案 0 :(得分:0)

您必须指定TriggerSetters正在运作的元素。

设置触发器的SourceName属性和Setters的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);