using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; namespace FWindSoft.Wpf { public class DataRowNoExtension : MarkupExtension { public DataRowNoExtension() { } public override object ProvideValue(IServiceProvider serviceProvider) { var targetProvider = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget)); // MarkupExtension 在样式模板中,返回 this 以延迟提供值。 //if (service.TargetObject.GetType().Name.EndsWith("SharedDp")) return this; // 如果不是 FrameworkElement,那么返回 this 以延迟提供值。 FrameworkElement target = targetProvider.TargetObject as FrameworkElement; if (target == null) return this; //var target = (FrameworkElement)targetProvider.TargetObject; var row = target.GetParentType(); if (row == null) return 0; return row.GetIndex() +1 ; } } }