aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.SharedUI/Controls
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-11 03:41:20 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-11 03:41:20 +0200
commite774f9a90fd812a9de8c3efe966a759bee8be703 (patch)
treeda7a59af6af40ff810254df9e08f6a0f5a31fe1c /Software/Visual_Studio/Tango.SharedUI/Controls
parenteb793f20dc078a304a423a481e5bb0eddce71471 (diff)
downloadTango-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.cs26
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);
});