DataRowNoExtension.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Markup;
  9. namespace FWindSoft.Wpf
  10. {
  11. public class DataRowNoExtension : MarkupExtension
  12. {
  13. public DataRowNoExtension()
  14. {
  15. }
  16. public override object ProvideValue(IServiceProvider serviceProvider)
  17. {
  18. var targetProvider = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
  19. // MarkupExtension 在样式模板中,返回 this 以延迟提供值。
  20. //if (service.TargetObject.GetType().Name.EndsWith("SharedDp")) return this;
  21. // 如果不是 FrameworkElement,那么返回 this 以延迟提供值。
  22. FrameworkElement target = targetProvider.TargetObject as FrameworkElement;
  23. if (target == null) return this;
  24. //var target = (FrameworkElement)targetProvider.TargetObject;
  25. var row = target.GetParentType<DataGridRow>();
  26. if (row == null)
  27. return 0;
  28. return row.GetIndex() +1 ;
  29. }
  30. }
  31. }