1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //----------------------------------------------------------------
5 namespace System.Activities.Presentation
7 using System.Diagnostics;
8 using System.Globalization;
9 using System.Windows.Data;
10 using System.Activities.Presentation.Model;
11 using System.Activities.Presentation.Internal.PropertyEditing.Model;
13 using System.Activities.Presentation.View;
16 internal class ExpandButtonVisibilityConverter : IMultiValueConverter
19 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
21 bool isRootDesigner = true;
22 if (values[0] is bool)
24 isRootDesigner = (bool)values[0];
26 ModelItem modelItem = values[1] as ModelItem;
27 WorkflowViewElement viewElement = values[2] as WorkflowViewElement;
28 Fx.Assert(viewElement != null, "TemplatedParent should be of type WorkflowViewElement");
29 return GetExpandCollapseButtonVisibility(viewElement);
32 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
34 throw FxTrace.Exception.AsError(new NotSupportedException());
37 public static Visibility GetExpandCollapseButtonVisibility(WorkflowViewElement viewElement)
39 ActivityDesigner designer = viewElement as ActivityDesigner;
40 bool hasDelegates = (designer != null) && designer.HasActivityDelegates;
42 Visibility visibility = Visibility.Visible;
43 if (viewElement == null || viewElement.IsRootDesigner || viewElement.DoesParentAlwaysExpandChild() ||
44 viewElement.DoesParentAlwaysCollapseChildren() || (viewElement.Content == null && !hasDelegates) ||
45 !viewElement.Collapsible || !(viewElement is ActivityDesigner))
47 visibility = Visibility.Collapsed;