这是行为的开始,应该给你指出正确的方向
public class DataGridHighlightBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.CurrentCellChanged += AssociatedObject_CurrentCellChanged;
}
void AssociatedObject_CurrentCellChanged(object sender, EventArgs e)
{
foreach (object i in AssociatedObject.ItemsSource)
{
var item = AssociatedObject.CurrentColumn.GetCellContent(i);
if (item == null)
return;
var parent = GetParent<DataGridCell>(item);
if (parent != null)
parent.Background = new SolidColorBrush(Colors.Red);
}
}
public static T GetParent<T>(DependencyObject source)
where T : DependencyObject
{
DependencyObject parent = VisualTreeHelper.GetParent(source);
while (parent != null && !typeof(T).IsAssignableFrom(parent.GetType()))
{
parent = VisualTreeHelper.GetParent(parent);
}
return (T)parent;
}
}