ParameterNodeTreeViewVisibilityMultiBindingConverter.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Diagnostics;
  3. using System.Globalization;
  4. using System.Windows;
  5. using System.Windows.Data;
  6. namespace MECF.Framework.UI.Client.Ctrlib.Converter
  7. {
  8. internal class ParameterNodeTreeViewVisibilityMultiBindingConverter : IMultiValueConverter
  9. {
  10. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  11. {
  12. // 如果绑定的参数个数错误,隐藏节点
  13. if (values.Length != 2)
  14. {
  15. Debugger.Break();
  16. return Visibility.Collapsed;
  17. }
  18. if (values[0] is bool isMatch && values[1] is Visibility visibility)
  19. {
  20. // 如果设置为隐藏,则无论是否Filter匹配,均隐藏节点
  21. if (visibility != Visibility.Visible)
  22. return visibility;
  23. // 如果设置为显示,则根据Filter是否匹配决定是否显示节点
  24. if (isMatch == false)
  25. return Visibility.Collapsed;
  26. return Visibility.Visible;
  27. }
  28. // 如果传入的参数类型错误,隐藏节点
  29. Debugger.Break();
  30. return Visibility.Collapsed;
  31. }
  32. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  33. {
  34. throw new NotImplementedException();
  35. }
  36. }
  37. }