MaskAdorner.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. ///////////////////////////////////////////////////////////////////////////////
  2. //Copyright (c) 2016, 北京探索者软件公司
  3. //All rights reserved.
  4. //文件名称: MaskAdorner.cs
  5. //文件描述: MaskAdorner.cs
  6. //创 建 者: xls
  7. //创建日期: 2018/5/31 9:26:35
  8. //版 本 号:1.0.0.0
  9. ////////////////////////////////////////////////////////////////////////////////
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Globalization;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using System.Windows;
  17. using System.Windows.Controls;
  18. using System.Windows.Documents;
  19. using System.Windows.Input;
  20. using System.Windows.Media;
  21. namespace FWindSoft.Wpf.Controls
  22. {
  23. public sealed class MaskAdorner:Adorner
  24. {
  25. private Control m_Child;
  26. public MaskAdorner(UIElement uiElement,ControlTemplate template) : base(uiElement)
  27. {
  28. this.m_Child = new Control
  29. {
  30. DataContext = uiElement,
  31. IsTabStop = false,
  32. Template = template,
  33. //IsHitTestVisible = false,
  34. };
  35. base.AddVisualChild(this.m_Child);
  36. }
  37. protected override Visual GetVisualChild(int index)
  38. {
  39. return m_Child??null;
  40. }
  41. protected override int VisualChildrenCount
  42. {
  43. get
  44. {
  45. if (m_Child == null)
  46. return 0;
  47. return 1;
  48. }
  49. }
  50. protected override Size MeasureOverride(Size availableSize)
  51. {
  52. // return AdornedElement.DesiredSize;
  53. return base.MeasureOverride(availableSize);
  54. }
  55. protected override Size ArrangeOverride(Size finalSize)
  56. {
  57. this.m_Child.Arrange(new Rect(new Point(0, 0), finalSize));
  58. return base.ArrangeOverride(finalSize);
  59. }
  60. }
  61. }