aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs
blob: 5034a4d906bfb7121f5a3de0bf5a36dd29a291f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using Tango.Core.DI;
using Tango.MachineStudio.Stubs.ViewModels;

namespace Tango.MachineStudio.Stubs
{
    /// <summary>
    /// This class contains static references to all the view models in the
    /// application and provides an entry point for the bindings.
    /// </summary>
    public static class ViewModelLocator
    {
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        static ViewModelLocator()
        {
            TangoIOC.Default.Register<MainViewVM>();
        }

        public static MainViewVM MainViewVM
        {
            get
            {
                return TangoIOC.Default.GetInstance<MainViewVM>();
            }
        }
    }
}
lass="k">public GridLength RowHeight { get { return (GridLength)GetValue(RowHeightProperty); } set { SetValue(RowHeightProperty, value); } } public static readonly DependencyProperty RowHeightProperty = DependencyProperty.Register("RowHeight", typeof(GridLength), typeof(TableGrid), new FrameworkPropertyMetadata(new GridLength(1, GridUnitType.Star), FrameworkPropertyMetadataOptions.AffectsRender)); public Thickness SecondRowMargin { get { return (Thickness)GetValue(SecondRowMarginProperty); } set { SetValue(SecondRowMarginProperty, value); } } // Using a DependencyProperty as the backing store for SecondRowMargin. This enables animation, styling, binding, etc... public static readonly DependencyProperty SecondRowMarginProperty = DependencyProperty.Register("SecondRowMargin", typeof(Thickness), typeof(TableGrid), new PropertyMetadata(new Thickness(20, 0, 0, 0))); public bool MakeFirstColumnVerticalAlignmentBottom { get { return (bool)GetValue(MakeFirstColumnVerticalAlignmentBottomProperty); } set { SetValue(MakeFirstColumnVerticalAlignmentBottomProperty, value); } } public static readonly DependencyProperty MakeFirstColumnVerticalAlignmentBottomProperty = DependencyProperty.Register("MakeFirstColumnVerticalAlignmentBottom", typeof(bool), typeof(TableGrid), new PropertyMetadata(true)); public TableGrid() { ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); this.Loaded += TableGrid_Loaded; } private void TableGrid_Loaded(object sender, RoutedEventArgs e) { InvalidateGrid(); } protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved) { base.OnVisualChildrenChanged(visualAdded, visualRemoved); InvalidateGrid(); } protected override Size ArrangeOverride(Size arrangeSize) { return base.ArrangeOverride(arrangeSize); } private void InvalidateGrid() { RowDefinitions.Clear(); RowDefinitions.Add(new RowDefinition() { Height = RowHeight }); int currentRow = 0; for (int i = 0; i < Children.Count; i++) { try { SetRow(Children[i], currentRow); if (i % 2 != 0) { SetColumn(Children[i], 1); if ((Children[i] as FrameworkElement).Margin == new Thickness()) { (Children[i] as FrameworkElement).Margin = SecondRowMargin; } currentRow++; RowDefinitions.Add(new RowDefinition() { Height = RowHeight }); } if (MakeFirstColumnVerticalAlignmentBottom) { (Children[i] as FrameworkElement).VerticalAlignment = VerticalAlignment.Bottom; } } catch { } } } } }