diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-11 03:41:20 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-11 03:41:20 +0200 |
| commit | e774f9a90fd812a9de8c3efe966a759bee8be703 (patch) | |
| tree | da7a59af6af40ff810254df9e08f6a0f5a31fe1c /Software/Visual_Studio/Tango.SharedUI/Controls | |
| parent | eb793f20dc078a304a423a481e5bb0eddce71471 (diff) | |
| download | Tango-e774f9a90fd812a9de8c3efe966a759bee8be703.tar.gz Tango-e774f9a90fd812a9de8c3efe966a759bee8be703.zip | |
Working on FSE/PPC performance provider.
Implemented resolution service.
a lot of work!
Diffstat (limited to 'Software/Visual_Studio/Tango.SharedUI/Controls')
| -rw-r--r-- | Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs index 15d15decb..ce1fca7ac 100644 --- a/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs +++ b/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs @@ -22,7 +22,9 @@ namespace Tango.SharedUI.Controls public class NavigationControl : UserControl { private event Action NavigationCompleted; + public event EventHandler<FrameworkElement> SelectedElementChanged; private Thread _navigationThread; + private bool _preventSelectedObjectNavigation; private ProducerConsumerQueue<NavigationQueueItem> _navigationQueue; private class NavigationQueueItem @@ -191,14 +193,12 @@ namespace Tango.SharedUI.Controls get { return (object)GetValue(SelectedObjectProperty); } set { SetValue(SelectedObjectProperty, value); } } - - // Using a DependencyProperty as the backing store for SelectedObject. This enables animation, styling, binding, etc... public static readonly DependencyProperty SelectedObjectProperty = - DependencyProperty.Register("SelectedObject", typeof(object), typeof(NavigationControl), new PropertyMetadata(null, (d, e) => (d as NavigationControl).OnSelectedObjectChanged())); + DependencyProperty.Register("SelectedObject", typeof(object), typeof(NavigationControl), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, (d, e) => (d as NavigationControl).OnSelectedObjectChanged())); private void OnSelectedObjectChanged() { - if (SelectedObject != null) + if (SelectedObject != null && !_preventSelectedObjectNavigation) { NavigateTo(SelectedObject); } @@ -218,7 +218,7 @@ namespace Tango.SharedUI.Controls set { SetValue(SelectedElementProperty, value); } } public static readonly DependencyProperty SelectedElementProperty = - DependencyProperty.Register("SelectedElement", typeof(FrameworkElement), typeof(NavigationControl), new PropertyMetadata(null, (d, e) => (d as NavigationControl).OnSelectedElementChanged(e.OldValue as FrameworkElement, e.NewValue as FrameworkElement))); + DependencyProperty.Register("SelectedElement", typeof(FrameworkElement), typeof(NavigationControl), new FrameworkPropertyMetadata(null, (d, e) => (d as NavigationControl).OnSelectedElementChanged(e.OldValue as FrameworkElement, e.NewValue as FrameworkElement))); public TransitionTypes TransitionType { @@ -310,7 +310,9 @@ namespace Tango.SharedUI.Controls /// <returns></returns> public static String GetNavigationName(FrameworkElement element) { - return element.GetValue(NavigationName).ToStringSafe(); + var name = element.GetValue(NavigationName).ToStringSafe(); + if (String.IsNullOrEmpty(name)) name = element.GetType().Name; + return name; } #endregion @@ -383,6 +385,8 @@ namespace Tango.SharedUI.Controls } else { + Elements.ToList().ForEach(x => x.FocusVisualStyle = null); + var toRemove = _grid.Children.OfType<NavigationElement>().ToList().Where(x => !Elements.Contains(x.Element)).ToList(); var toAdd = Elements.Where(x => !_grid.Children.OfType<NavigationElement>().Select(y => y.Element).ToList().Contains(x)).ToList(); @@ -622,6 +626,14 @@ namespace Tango.SharedUI.Controls protected virtual void OnSelectedElementChanged(FrameworkElement fromElement, FrameworkElement toElement) { Navigate(GetElementContainer(fromElement), GetElementContainer(toElement)); + SelectedElementChanged?.Invoke(this, toElement); + + if (toElement != null) + { + _preventSelectedObjectNavigation = true; + SelectedObject = GetNavigationName(toElement); + _preventSelectedObjectNavigation = false; + } } #endregion @@ -696,7 +708,7 @@ namespace Tango.SharedUI.Controls FrameworkElement view = null; - view = NavigateTo(navigationName, () => + view = NavigateTo(navigationName, () => { source.SetResult(view); }); |
