4 using System.Collections.Generic;
7 using SiliconStudio.Core.Extensions;
8 using SiliconStudio.Presentation.Core;
10 namespace SiliconStudio.Presentation.Behaviors
16 [Obsolete(
"This behavior is not maintained and should not be used.")]
19 private static readonly Dictionary<string, List<FrameworkElement>> ElementGroups =
new Dictionary<string, List<FrameworkElement>>();
21 private string groupName;
26 public string GroupName {
get {
return groupName; } set { UnregisterElement(); groupName = value; RegisterElement(); } }
31 public bool SynchronizeWidth {
get; set; }
36 public bool SynchronizeHeight {
get; set; }
40 propertyWatcher.Attach(AssociatedObject);
43 propertyWatcher.RegisterValueChangedHandler(FrameworkElement.ActualWidthProperty, WidthChanged);
45 if (SynchronizeHeight)
47 propertyWatcher.RegisterValueChangedHandler(FrameworkElement.ActualHeightProperty, HeightChanged);
54 propertyWatcher.Detach();
58 private void RegisterElement()
60 if (AssociatedObject != null)
62 List<FrameworkElement> list = ElementGroups.GetOrCreateValue(GroupName);
63 list.Add(AssociatedObject);
66 WidthChanged(AssociatedObject,
EventArgs.Empty);
68 if (SynchronizeHeight)
70 HeightChanged(AssociatedObject,
EventArgs.Empty);
75 private void UnregisterElement()
77 if (AssociatedObject != null)
79 List<FrameworkElement> list;
80 if (ElementGroups.TryGetValue(GroupName, out list))
82 list.Remove(AssociatedObject);
87 private void WidthChanged(
object sender,
EventArgs e)
89 List<FrameworkElement> list;
90 if (ElementGroups.TryGetValue(GroupName, out list))
93 ElementGroups.Remove(GroupName);
94 foreach (var element
in list)
96 if (element.ActualWidth < AssociatedObject.ActualWidth)
97 element.Width = AssociatedObject.ActualWidth;
99 ElementGroups.Add(GroupName, list);
103 private void HeightChanged(
object sender,
EventArgs e)
105 List<FrameworkElement> list;
106 if (ElementGroups.TryGetValue(GroupName, out list))
109 ElementGroups.Remove(GroupName);
110 foreach (var element
in list)
112 if (element.ActualHeight < AssociatedObject.ActualHeight)
113 element.Height = AssociatedObject.ActualHeight;
115 ElementGroups.Add(GroupName, list);
A behavior that allows to synchronize the width and/or height of FrameworkElements so that each insta...
override void OnDetachingOverride()
override void OnAttachedOverride()