Esempio n. 1
1
        private void MakeDataTrigger(Style style)
        {
            // Introducing System.Data.Binding, used below to make AttachedProperty Binding
            var apBinding = new Binding("(local:AttachedProperties.IsHighlighted)")
            {
                RelativeSource = RelativeSource.TemplatedParent
            };

            var apDataTrigger = new DataTrigger {
                Binding = apBinding, Value = true
            };

            apDataTrigger.Setters.Add(new Setter(FrameworkElement.VisibilityProperty, Visibility.Visible));

            // Introducing Windows.Media.Animation
            var sb      = new Storyboard();
            var colAnim = new ColorAnimation(Colors.Transparent, Colors.Red, TimeSpan.FromMilliseconds(250));

            colAnim.AutoReverse    = true;
            colAnim.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTargetProperty(colAnim, new PropertyPath("(Background).(SolidColorBrush.Color)"));
            colAnim.EasingFunction = new CubicEase {
                EasingMode = EasingMode.EaseOut
            };

            sb.Children.Add(colAnim);

            var bsb = new BeginStoryboard {
                Name = "HighlightedAnimation", Storyboard = sb
            };

            apDataTrigger.EnterActions.Add(bsb);
            apDataTrigger.ExitActions.Add(new StopStoryboard {
                BeginStoryboardName = "HighlightedAnimation"
            });

            style.Triggers.Add(apDataTrigger);
            // Next line needed, or causes exception: 'HighlightedAnimation' name cannot be found in the name scope of 'System.Windows.Style'.
            style.RegisterName("HighlightedAnimation", bsb);
        }
		public RequiredFieldTriggerPage ()
		{
			var l = new Label {
				Text = "Entry requires length>0 before button is enabled",
			};
			l.FontSize = Device.GetNamedSize (NamedSize.Small, l); 

			var e = new Entry { Placeholder = "enter name" };

			var b = new Button { Text = "Save",

				HorizontalOptions = LayoutOptions.Center
			};
			b.FontSize = Device.GetNamedSize (NamedSize.Large ,b);

			var dt = new DataTrigger (typeof(Button));
			dt.Binding = new Binding ("Text.Length", BindingMode.Default, source: e);
			dt.Value = 0;
			dt.Setters.Add (new Setter { Property = Button.IsEnabledProperty, Value = false });
			b.Triggers.Add (dt);

			Content = new StackLayout { 
				Padding = new Thickness(0,20,0,0),
				Children = {
					l,
					e,
					b
				}
			};
		}
Esempio n. 3
0
        public GridContainer CreateDataTrigger()
        {
            var box = new BoxView()
            {
                HeightRequest   = 28,
                WidthRequest    = 28,
                BackgroundColor = Color.Crimson
            };

            var fadeAnimation = new CoreTriggerAction()
            {
                Animation = new CoreFadeToAnimation()
                {
                    Target   = box,
                    Duration = "300",
                    Opacity  = 0
                }
            };

            var trigger = new DataTrigger(typeof(Button))
            {
                Binding      = new Binding(path: "ClickCount", mode: BindingMode.TwoWay),
                Value        = 3,
                EnterActions = { fadeAnimation }
            };


            var btn = new CoreButton()
            {
                Text     = "Data Trigger (3)",
                Style    = CoreStyles.LightOrange,
                Triggers = { trigger }
            };

            btn.SetBinding(CoreButton.CommandProperty, "ClickEvent");

            var grid = new GridContainer(true);

            grid.AddChild(box, 0, 0);
            grid.AddChild(btn, 0, 1);
            return(grid);
        }
        private DataTemplate createRestColumn(int setNumber)
        {
            var gridFactory = new FrameworkElementFactory(typeof(Grid));

            gridFactory.SetValue(Grid.BackgroundProperty, Brushes.Transparent);
            gridFactory.Name = "mainGrid";

            var factory = new FrameworkElementFactory(typeof(StackPanel));

            factory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);

            gridFactory.AppendChild(factory);


            var tbSet = new FrameworkElementFactory(typeof(TextBlock));

            tbSet.SetValue(TextBlock.VerticalAlignmentProperty, System.Windows.VerticalAlignment.Center);
            factory.AppendChild(tbSet);

            tbSet.Name = "txtBlock";
            var b = new Binding(setNumber + ".RestTime");

            b.Mode = BindingMode.OneWay;
            tbSet.SetValue(TextBlock.TextProperty, b);


            // Create the template itself, and add the factory to it.
            DataTemplate cellTemplate = new DataTemplate();

            cellTemplate.VisualTree = gridFactory;


            var trigger = new DataTrigger();
            var binding = new Binding(setNumber + ".IsRestPause");

            trigger.Binding = binding;
            trigger.Value   = true;
            trigger.Setters.Add(new Setter(Grid.BackgroundProperty, Brushes.LightSalmon, "mainGrid"));
            cellTemplate.Triggers.Add(trigger);

            return(cellTemplate);
        }
Esempio n. 5
0
        public ProjectView()
        {
            InitializeComponent();

            // Change ItemContainerStyle of the _versions combobox so that
            // for a null value, a separator is generated.
            var dataTrigger = new DataTrigger();

            dataTrigger.Binding = new Binding();
            dataTrigger.Value   = null;
            dataTrigger.Setters.Add(new Setter(TemplateProperty, FindResource("SeparatorControlTemplate")));

            // make sure the separator can't be selected thru keyboard navigation.
            dataTrigger.Setters.Add(new Setter(IsEnabledProperty, false));

            var style = new Style(typeof(ComboBoxItem), _versions.ItemContainerStyle);

            style.Triggers.Add(dataTrigger);
            _versions.ItemContainerStyle = style;
        }
        Style CreateStyle()
        {
            var style = new Style();

            var multibinding = new MultiBinding {
                Converter = new SimpleMultiValueConverter()
            };

            multibinding.Bindings.Add(new Binding("FirstName"));
            multibinding.Bindings.Add(new Binding("LstName")); //purposefully misspelled

            var trigger = new DataTrigger();

            trigger.Binding = multibinding;
            trigger.Value   = "Rob Eisenberg";

            style.Triggers.Add(trigger);

            return(style);
        }
        public MainWindow()
        {
            InitializeComponent();
            messages.Add(new Message(DateTime.Now, "This is a test."));
            messages.Add(new Message(DateTime.Now, "This is a multi-line message.\nThis is a multi-line message."));
            messages.Add(new Message(DateTime.Now, "This is a multi-line message.\nThis is a multi-line message."));
            messages.Add(new Message(DateTime.Now, "This is a multi-line message.\nThis is a multi-line message."));
            ListView listView = new ListView();
            Style    style    = new Style();

            style.TargetType = typeof(ListViewItem);
            DataTrigger trigger = new DataTrigger();

            trigger.Binding = new Binding("Text");
            trigger.Value   = "This is a test.";
            trigger.Setters.Add(new Setter(ListViewItem.BackgroundProperty, Brushes.Pink));
            style.Triggers.Add(trigger);
            style.Setters.Add(new Setter(ListViewItem.HeightProperty, 20.0));
            style.Setters.Add(new Setter(ListViewItem.MarginProperty, new Thickness(0)));
            style.Setters.Add(new Setter(ListViewItem.BorderThicknessProperty, new Thickness(0)));
            listView.ItemContainerStyle = style;
            GridView gridView = new GridView();

            listView.View = gridView;
            GridViewColumn timeStampColumn = new GridViewColumn();

            timeStampColumn.DisplayMemberBinding = new Binding("Date");
            GridViewColumnHeader timeStampHeader = new GridViewColumnHeader();

            timeStampHeader.Content = "Time";
            timeStampColumn.Header  = timeStampHeader;
            gridView.Columns.Add(timeStampColumn);
            GridViewColumn messageColumn = CreateGridViewColumn("Message", "Text");

            gridView.Columns.Add(messageColumn);
            Binding binding = new Binding();

            binding.Source = messages;
            listView.SetBinding(ItemsControl.ItemsSourceProperty, binding);
            MainGrid.Children.Add(listView);
        }
Esempio n. 8
0
        private DataTemplate CellTemplateFor(ColumnModel column)
        {
            var key = column.Index.ToString();

            var tBlockStyleTriggerForeground = new DataTrigger {
                Binding = new Binding($"{key}_color"), Value = "SecondaryTextBrush"
            };

            tBlockStyleTriggerForeground.Setters.Add(new Setter(TextBlock.ForegroundProperty, Brushes.LightGray));

            var tBlockStyle = new Style(typeof(TextBlock));

            tBlockStyle.Setters.Add(new Setter(TextBlock.ForegroundProperty, Brushes.Black));
            tBlockStyle.Triggers.Add(tBlockStyleTriggerForeground);

            var tBlockFactory = new FrameworkElementFactory(typeof(TextBlock));

            tBlockFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center);
            tBlockFactory.SetValue(FrameworkElement.MarginProperty, new Thickness(3, 0, 3, 2));
            tBlockFactory.SetValue(TextBlock.TextProperty, new Binding(key));
            tBlockFactory.SetValue(TextBlock.TextTrimmingProperty, TextTrimming.CharacterEllipsis);
            tBlockFactory.SetValue(FrameworkElement.StyleProperty, tBlockStyle);
            if (column.IsNumeric)
            {
                tBlockFactory.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
            }
            else if (column.IsBool)
            {
                tBlockFactory.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
            }

            var gridFactory = new FrameworkElementFactory(typeof(Grid));

            gridFactory.SetValue(Panel.BackgroundProperty, Brushes.Transparent);
            gridFactory.AppendChild(tBlockFactory);

            return(new DataTemplate {
                VisualTree = gridFactory
            });
        }
Esempio n. 9
0
        public TodoItemCell()
        {
            var label = new Label
            {
                VerticalTextAlignment = TextAlignment.Center
            };

            label.SetBinding(Label.TextProperty, "Name");

            var dt = new DataTrigger(typeof(Label));

            dt.Binding = new Binding("IsFinished");
            dt.Value   = true;

            var setter = new Setter();

            setter.Property = Label.TextColorProperty;
            setter.Value    = Color.Red;
            ;
            dt.Setters.Add(setter);
            label.Triggers.Add(dt);

            var tick = new Image
            {
                Source = ImageSource.FromFile("check.png"),
            };

            tick.SetBinding(Image.IsVisibleProperty, "IsFinished");

            var layout = new StackLayout
            {
                Padding           = new Thickness(20, 5, 5, 5),
                Orientation       = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.StartAndExpand,
                Children          = { tick, label }
            };

            View = layout;
        }
Esempio n. 10
0
        public RequiredFieldTriggerPage()
        {
            var l = new Label {
                Text = "Entry requires length>0 before button is enabled",
            };

            l.FontSize = Device.GetNamedSize(NamedSize.Small, l);

            var e = new Entry {
                Placeholder = "enter name"
            };

            var b = new Button {
                Text = "Save",

                HorizontalOptions = LayoutOptions.Center
            };

            b.FontSize = Device.GetNamedSize(NamedSize.Large, b);

            var dt = new DataTrigger(typeof(Button));

            dt.Binding = new Binding("Text.Length", BindingMode.Default, source: e);
            dt.Value   = 0;
            dt.Setters.Add(new Setter {
                Property = Button.IsEnabledProperty, Value = false
            });
            b.Triggers.Add(dt);

            Content = new StackLayout {
                Padding  = new Thickness(0, 20, 0, 0),
                Children =
                {
                    l,
                    e,
                    b
                }
            };
        }
Esempio n. 11
0
        public static void AddDataTriggerST(Style style, Storyboard st, object souce, string path, object value)
        {
            string          guid    = "B" + GetGuid().Replace("-", "");
            DataTrigger     data    = new DataTrigger();
            BeginStoryboard beginst = new BeginStoryboard()
            {
                Storyboard = st, Name = guid
            };

            data.Binding = new Binding(path)
            {
                Source = souce, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
            };
            style.RegisterName(guid, beginst);
            data.Value = value;
            data.EnterActions.Add(beginst);
            data.ExitActions.Add(new StopStoryboard()
            {
                BeginStoryboardName = guid
            });
            style.Triggers.Add(data);
        }
Esempio n. 12
0
        public void SettersAppliedOnAttachIfConditionIsTrue()
        {
            var setterbp    = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null);
            var element     = new MockElement();
            var datatrigger = new DataTrigger(typeof(VisualElement))
            {
                Binding = new Binding("foo"),
                Value   = "foobar",
                Setters =
                {
                    new Setter {
                        Property = setterbp, Value = "qux"
                    },
                }
            };

            element.SetValue(setterbp, "default");
            element.BindingContext = new { foo = "foobar" };
            Assert.AreEqual("default", element.GetValue(setterbp));
            element.Triggers.Add(datatrigger);
            Assert.AreEqual("qux", element.GetValue(setterbp));
        }
        private void CalanderEvent()
        {
            try
            {
                List <DateTime> list = null;
                list = (from e in balCamp.GetAll() where e.CampStartDate <DateTime.Now.AddMonths(MonthRange) && e.CampStartDate> DateTime.Now.AddMonths(-MonthRange) select e.CampStartDate).ToList();

                Style s = (Style)Resources["styleCalendarDayButtonStyleEvent"];
                foreach (var holidayDates in list)
                {
                    DataTrigger dataTrigger = new DataTrigger()
                    {
                        Binding = new Binding("Date"), Value = holidayDates
                    };
                    dataTrigger.Setters.Add(new Setter(System.Windows.Controls.Primitives.CalendarDayButton.BackgroundProperty, Brushes.DeepSkyBlue));
                    s.Triggers.Add(dataTrigger);
                }
            }
            catch (Exception ex)
            {
                MessageHandler.ShowErrorMessage(ex.Message);
            }
        }
Esempio n. 14
0
        private static void FieldPropertyChanged(BindableObject bindable, object oldValue, object newValue)
        {
            FormField control = (FormField)bindable;
            ValidatableText <string> field = (ValidatableText <string>)newValue;

            control.Entry.SetBinding(Entry.TextProperty, new Binding("Value", source: field));
            control.Error.SetBinding(Label.TextProperty, new Binding("Errors", source: field, converter: new FirstValidationErrorConverter()));
            DataTrigger trigger = new DataTrigger(typeof(Entry))
            {
                Binding = new Binding("IsValid", source: field),
                Value   = false
            };


            Setter setter = new Setter
            {
                Property = LineColorBehavior.LineColorProperty,
                Value    = control.ErrorLineColor
            };

            trigger.Setters.Add(setter);
            control.Entry.Triggers.Add(trigger);
        }
Esempio n. 15
0
        //private static readonly DataTemplate DefaultTemplate;

        static ComboBoxBackend()
        {
            var factory = new FrameworkElementFactory(typeof(WindowsSeparator));

            factory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);

            var sepTemplate = new ControlTemplate(typeof(ComboBoxItem));

            sepTemplate.VisualTree = factory;

            DataTrigger trigger = new DataTrigger();

            trigger.Binding = new Binding(".[1]")
            {
                Converter = new TypeToStringConverter()
            };
            trigger.Value = typeof(ItemSeparator).Name;
            trigger.Setters.Add(new Setter(Control.TemplateProperty, sepTemplate));
            trigger.Setters.Add(new Setter(UIElement.IsEnabledProperty, false));

            ContainerStyle = new Style(typeof(ComboBoxItem));
            ContainerStyle.Triggers.Add(trigger);
        }
Esempio n. 16
0
        private void UpdateHighlightedDates()
        {
            // Create new Style
            var style = new Style
            {
                TargetType = typeof(CalendarDayButton)
            };

            // Add dates to the Style
            foreach (var date in Day.AllWithEvent())
            {
                var dataTrigger = new DataTrigger
                {
                    Binding = new Binding("Date"),
                    Value   = date
                };
                dataTrigger.Setters.Add(new Setter(BackgroundProperty, Brushes.Silver));
                style.Triggers.Add(dataTrigger);
            }

            // Change the Style
            Resources["CdbKey"] = style;
        }
        private static DataTemplate GetDataTemplate(int row)
        {
            var trigger = new DataTrigger {
                Binding = new Binding($"[{row}].IsRemoved"), Value = true
            };

            trigger.Setters.Add(new Setter(TextBlock.ForegroundProperty, Brushes.Gray));

            var style = new Style {
                TargetType = typeof(TextBlock)
            };

            style.Triggers.Add(trigger);

            var textFactory = new FrameworkElementFactory(typeof(TextBlock));

            textFactory.SetBinding(TextBlock.TextProperty, new Binding($"[{row}]"));
            textFactory.SetValue(StyleProperty, style);

            return(new DataTemplate {
                VisualTree = textFactory
            });
        }
        void Design()
        {
            List <DateTime> dates = new List <DateTime>()
            {
                new DateTime(2017, 11, 22),
                new DateTime(2017, 11, 13),
                new DateTime(2017, 11, 12),
                new DateTime(2017, 11, 23),
                new DateTime(2017, 11, 21)
            };

            Style s = (Style)Resources["styleCalendarDayButtonStyle"];

            foreach (var holidayDates in dates)
            {
                DataTrigger dataTrigger = new DataTrigger()
                {
                    Binding = new Binding("Date"), Value = holidayDates
                };
                dataTrigger.Setters.Add(new Setter(System.Windows.Controls.Primitives.CalendarDayButton.BackgroundProperty, Brushes.OrangeRed));
                s.Triggers.Add(dataTrigger);
            }
        }
        public SolutionView()
        {
            InitializeComponent();

            // Change ItemContainerStyle of the _versions combobox so that
            // for a null value, a separator is generated.
            var dataTrigger = new DataTrigger();

            dataTrigger.Binding = new Binding();
            dataTrigger.Value   = null;
            dataTrigger.Setters.Add(new Setter(TemplateProperty, FindResource("SeparatorControlTemplate")));

            // make sure the separator can't be selected thru keyboard navigation.
            dataTrigger.Setters.Add(new Setter(IsEnabledProperty, false));

            var style = new Style(typeof(ComboBoxItem), _versions.ItemContainerStyle);

            style.Triggers.Add(dataTrigger);
            _versions.ItemContainerStyle = style;

            _projectList.SizeChanged += ListView_SizeChanged;
            ((GridView)_projectList.View).Columns.CollectionChanged += Columns_CollectionChanged;

            //Requested Version column may not be needed, but since saved Sorting Settings are being restored at initialization time,
            //we should go ahead and create the Header column for it here with its Sort property name.
            _requestedVersionColumn = new GridViewColumnHeader();
            SortableColumnHeaderAttachedProperties.SetSortPropertyName(_requestedVersionColumn, "RequestedVersion");

            _sortableColumns = new List <GridViewColumnHeader>
            {
                _projectColumnHeader,
                _installedVersionColumnHeader,
                _requestedVersionColumn
            };

            SortByColumn(_projectColumnHeader);
        }
Esempio n. 20
0
        private void Configure()
        {
            var binding = new Binding
            {
                RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(ImageButton), 1),
                Path           = new PropertyPath("IsEnabled")
            };
            var dataTrigger = new DataTrigger {
                Binding = binding, Value = false, Setters = { new Setter(OpacityProperty, 0.25) }
            };
            var stackPanel = new StackPanel();

            stackPanel.Children.Add(new Image {
                Source = ImageSource, Style = new Style {
                    Triggers = { dataTrigger }
                }, Height = 25, Margin = new Thickness(0)
            });
            var label = new Label
            {
                HorizontalAlignment        = HorizontalAlignment.Center,
                HorizontalContentAlignment = HorizontalAlignment.Left,
                Margin  = new Thickness(0),
                Padding = new Thickness(0),
            };

            if (!string.IsNullOrEmpty(Label))
            {
                label.Content = new AccessText {
                    Text = Label, TextWrapping = TextWrapping.Wrap, Margin = new Thickness(0)
                }
            }
            ;

            stackPanel.Children.Add(label);
            Content = stackPanel;
        }
Esempio n. 21
0
        public MyEvent(String opis, DateTime data, EventType rodzaj)
        {
            this.opis   = opis;
            this.data   = data;
            this.rodzaj = rodzaj;
            switch (rodzaj)
            {
            case EventType.Egzamin:
                kolor = Brushes.Red;
                break;

            case EventType.Szkoła:
                kolor = Brushes.LawnGreen;
                break;

            case EventType.Praca:
                kolor = Brushes.Gold;
                break;

            case EventType.Randka:
                kolor = Brushes.HotPink;
                break;

            case EventType.Inne:
                kolor = Brushes.LightSkyBlue;
                break;

            default:
                break;
            }
            dataTrigger = new DataTrigger()
            {
                Binding = new Binding("Date"), Value = data
            };
            dataTrigger.Setters.Add(new Setter(CalendarDayButton.BackgroundProperty, kolor));
        }
Esempio n. 22
0
        protected virtual void ComposeStyle()
        {
            var style = new Style();

            // set opacity to 50% if not enabled:
            var trigger = new DataTrigger {
                Value   = false,
                Binding = WpfExtensions.Binding(this, o => o.IsEnabled, BindingMode.OneWay),
            };

            var setter = new Setter {
                Property = UIElement.OpacityProperty,
                Value    = 0.5,
            };

            trigger.Setters.Add(setter);
            style.Triggers.Add(trigger);

            var baseStyle = ToolbarUtils.ToolbarItemStyle(this);

            style.TargetType = baseStyle.TargetType;
            style.BasedOn    = baseStyle;
            this.Style       = style;
        }
        DataTemplate CreateItemTemplate()
        {
            var template = new DataTemplate();

            template.VisualTree = new FrameworkElementFactory(typeof(StackPanel));

            var txtBlock = new FrameworkElementFactory(typeof(TextBlock));

            txtBlock.SetBinding(TextBlock.TextProperty, new Binding("Street1"));
            template.VisualTree.AppendChild(txtBlock);

            txtBlock = new FrameworkElementFactory(typeof(TextBlock));
            txtBlock.SetBinding(TextBlock.TextProperty, new Binding("City"));
            template.VisualTree.AppendChild(txtBlock);

            var trigger = new DataTrigger();

            trigger.Binding = new Binding("Cty"); //misspelling
            trigger.Value   = "Tallahassee";

            template.Triggers.Add(trigger);

            return(template);
        }
    public MainPage()
    {
        InitializeComponent();
        vm             = new MyViewModel();
        BindingContext = vm;
        var faveLabel = new Label {
            FontSize = 24, FontFamily = "FontAwesome", Text = "Tap Here !"
        };
        var trigger1 = new DataTrigger(typeof(Label));

        trigger1.Binding = new Binding("Favorite", BindingMode.TwoWay);
        trigger1.Value   = true;
        trigger1.Setters.Add(new Setter {
            Property = Label.TextColorProperty, Value = Color.Red
        });
        var trigger2 = new DataTrigger(typeof(Label));

        trigger2.Binding = new Binding("Favorite", BindingMode.TwoWay);
        trigger2.Value   = false;
        trigger2.Setters.Add(new Setter {
            Property = Label.TextColorProperty, Value = Color.Gray
        });
        faveLabel.Triggers.Add(trigger1);
        faveLabel.Triggers.Add(trigger2);
        var sl = new StackLayout {
            HorizontalOptions = LayoutOptions.StartAndExpand,
            VerticalOptions   = LayoutOptions.CenterAndExpand
        };
        var tgr = new TapGestureRecognizer();

        tgr.NumberOfTapsRequired = 1;
        tgr.Tapped += tapFavorites;
        sl.GestureRecognizers.Add(tgr);
        sl.Children.Add(faveLabel);
        Content = sl;
    }
    private static void OnDetailControlChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
    {
        if (args.NewValue == null)
        {
            return;
        }
        var label   = (Label)sender;
        var style   = new Style(typeof(Label), label.Style);
        var binding = new Binding();

        binding.Source = args.NewValue;
        binding.Path   = new PropertyPath(Validation.HasErrorProperty);
        var trigger = new DataTrigger();

        trigger.Binding = binding;
        trigger.Value   = true;
        var setter = new Setter();

        setter.Property = Label.ForegroundProperty;
        setter.Value    = Brushes.Red;
        trigger.Setters.Add(setter);
        style.Triggers.Add(trigger);
        label.Style = style;
    }
Esempio n. 26
0
        public ConsumerControl(object dataContext, double buttonSize)
        {
            this.Button       = new Button();
            this.ButtonCanvas = new Canvas();

            //Canvas.SetLeft(this, left);
            //Canvas.SetTop(this, top);
            //Canvas.SetZIndex(this, z);

            this.ButtonCanvas.Height = buttonSize;
            this.ButtonCanvas.Width  = buttonSize;
            this.Button.Height       = buttonSize;
            this.Button.Width        = buttonSize;

            this.DataContext = dataContext;
            FrameworkElement frameworkElement = new FrameworkElement();

            Style style = new Style();

            style.TargetType = typeof(Button);

            Setter setter = new Setter();

            setter.Property = Button.TemplateProperty;

            ControlTemplate         template    = new ControlTemplate(typeof(Button));
            FrameworkElementFactory elemFactory = new FrameworkElementFactory(typeof(Border));

            elemFactory.Name = "Border";
            elemFactory.SetValue(Border.CornerRadiusProperty, new CornerRadius(buttonSize / 2));
            elemFactory.SetValue(Border.BackgroundProperty, (SolidColorBrush)frameworkElement.FindResource("SwitchColorClosed"));
            template.VisualTree = elemFactory;

            Trigger trigger1 = new Trigger();

            trigger1.Property = Button.IsMouseOverProperty;
            trigger1.Value    = true;

            Setter setter1 = new Setter();

            setter1.Property   = Border.BackgroundProperty;
            setter1.Value      = (SolidColorBrush)frameworkElement.FindResource("SwitchColorClosed");
            setter1.TargetName = "Border";
            trigger1.Setters.Add(setter1);

            template.Triggers.Add(trigger1);

            Trigger trigger2 = new Trigger();

            trigger2.Property = Button.IsPressedProperty;
            trigger2.Value    = true;

            Setter setter2 = new Setter();

            setter2.Property   = Border.BackgroundProperty;
            setter2.Value      = (SolidColorBrush)frameworkElement.FindResource("SwitchColorClosed");
            setter2.TargetName = "Border";
            trigger2.Setters.Add(setter2);

            template.Triggers.Add(trigger2);

            DataTrigger dataTrigger1 = new DataTrigger();

            dataTrigger1.Binding = new Binding("IsEnergized");
            dataTrigger1.Value   = false;

            Setter dataSetter1 = new Setter();

            dataSetter1.Property   = Border.BackgroundProperty;
            dataSetter1.Value      = (SolidColorBrush)frameworkElement.FindResource("SwitchColorClosedDeenergized");
            dataSetter1.TargetName = "Border";
            dataTrigger1.Setters.Add(dataSetter1);

            template.Triggers.Add(dataTrigger1);

            setter.Value = template;

            style.Triggers.Clear();
            style.Setters.Add(setter);
            this.Button.Style = style;
            this.ButtonCanvas.Children.Add(Button);

            this.Children.Add(this.ButtonCanvas);

            EnergyConsumerProperties consumerProperties = (EnergyConsumerProperties)dataContext;

            Canvas callCanvas = new Canvas();
            Border callBorder = new Border()
            {
                Height     = buttonSize,
                Width      = buttonSize,
                Background = new ImageBrush(new BitmapImage(new Uri(Directory.GetCurrentDirectory() + "/../../View/Resources/Images/call.png"))),
                ToolTip    = "Call"
            };

            Style callStyle = new Style();

            Setter callSetter1 = new Setter();

            callSetter1.Property = Canvas.VisibilityProperty;
            callSetter1.Value    = Visibility.Hidden;

            callStyle.Setters.Add(callSetter1);

            Setter callSetter2 = new Setter();

            callSetter2.Property = Canvas.VisibilityProperty;
            callSetter2.Value    = Visibility.Visible;

            DataTrigger callTrigger = new DataTrigger();

            callTrigger.Binding = new Binding("Call");
            callTrigger.Value   = true;
            callTrigger.Setters.Add(callSetter2);

            callStyle.Triggers.Add(callTrigger);

            callCanvas.Style            = callStyle;
            callCanvas.IsHitTestVisible = false;

            Canvas.SetLeft(callBorder, -(callBorder.Width / 2));
            Canvas.SetTop(callBorder, -(callBorder.Height / 2));

            callCanvas.Children.Add(callBorder);

            this.ButtonCanvas.Children.Add(callCanvas);

            if (consumerProperties.IsUnderScada)
            {
                Canvas scadaCanvas = new Canvas();
                Border scadaBorder = new Border()
                {
                    Height      = buttonSize / 2,
                    Width       = buttonSize / 2,
                    Background  = Brushes.DarkOrange,
                    BorderBrush = Brushes.White,
                    ToolTip     = "Under SCADA"
                };
                scadaBorder.CornerRadius    = new CornerRadius(scadaBorder.Height / 2);
                scadaBorder.BorderThickness = new Thickness(scadaBorder.Height / 10);
                Canvas.SetLeft(scadaBorder, -(scadaBorder.Width / 4));
                Canvas.SetTop(scadaBorder, (scadaBorder.Height));
                scadaCanvas.Children.Add(scadaBorder);

                TextBlock scadaTextblock = new TextBlock()
                {
                    Text                = "S",
                    Foreground          = Brushes.White,
                    ToolTip             = "Under SCADA",
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Center,
                    FontSize            = 4 * scadaBorder.Height / 5,
                    Margin              = new Thickness(0, 0, 0, scadaBorder.Height / 6)
                };
                scadaBorder.Child = scadaTextblock;

                this.ButtonCanvas.Children.Add(scadaCanvas);
            }
        }
Esempio n. 27
0
        private static DataGridColumn CreateColumn(DataGrid gridView, object columnSource)
        {
            DataGridTextColumn column = new DataGridTextColumn();
            var info = columnSource as DataGridColumnInfoM;

            if (!string.IsNullOrEmpty(info.Header))
            {
                column.Header = info.Header;
            }
            if(!string.IsNullOrEmpty(info.Binding))
            {

                column.Binding = new Binding(info.Binding);
            }
            if(!string.IsNullOrEmpty(info.HorizontalContentAlignment))
            {
                //column.ElementStyle = new Binding(info.HorizontalContentAlignment);
                Style right = new Style(typeof(TextBlock));
                Setter setRight = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
                right.Setters.Add(setRight);
                setRight = new Setter(TextBlock.MarginProperty, new Thickness(5,0,5,0));
                right.Setters.Add(setRight);
                column.ElementStyle = right;
            }
            if (info.Width > 0)
            {
                column.Width = info.Width;
            }

            return column;
#if false
            DataTemplate template = new DataTemplate();
            FrameworkElementFactory factory = new FrameworkElementFactory(typeof(TextBlock));
            factory.SetValue(TextBlock.HorizontalAlignmentProperty, info.HorizontalAlignment);
            if (info.Foreground != null)
            {
                factory.SetValue(TextBlock.ForegroundProperty, info.Foreground);
            }
            if (info.ForegroundTriggerParameters != null && !string.IsNullOrEmpty(info.ForegroundMemberPath))
            {
                foreach (var o in info.ForegroundTriggerParameters)
                {
                    var trigger = new DataTrigger();
                    trigger.Binding = new Binding(info.ForegroundMemberPath);
                    trigger.Value = o.Key;
                    var setter = new Setter();
                    setter.Property = TextBlock.ForegroundProperty;
                    setter.Value = o.Value;
                    trigger.Setters.Add(setter);
                    template.Triggers.Add(trigger);
                }
            }

            var binding = new Binding(info.DisplayMemberPath);
            if (!string.IsNullOrEmpty(info.StringFormat))
            {
                binding.StringFormat = string.Format("{{0:{0}}}", info.StringFormat);
            }
            if (info.Converter != null)
            {
                binding.Converter = info.Converter;
                binding.ConverterParameter = info.ConverterParameter;
            }
            factory.SetBinding(TextBlock.TextProperty, binding);
            template.VisualTree = factory;

            column.CellTemplate = template;

            ListViewItemSortData scd = new ListViewItemSortData(info.DisplayMemberPath);
            scd.Direction = info.SortDirection;
            if (SortColumns.Count(c => c.Key == column) == 0)
            {
                SortColumns.Add(column, scd);
            }
            else
            {
                Console.WriteLine("Repeat SortColumns..................");
            }

            return column;
#endif
        }
Esempio n. 28
0
        public void UpdateTabs()
        {
            TabControl.Items.Clear();
            foreach (TranslationFile translationFile in _controller.TranslationFiles)
            {
                TabItem tab = AddTab(translationFile.Name);

                Style rowStyle = new Style();
                rowStyle.Setters.Add(new Setter(BackgroundProperty, new Binding("Score")
                {
                    Converter = new Int2ColorConverter()
                }));
                DataGrid dataGrid = new DataGrid
                {
                    ItemsSource         = translationFile.TranslationPairs,
                    AutoGenerateColumns = false,
                    RowStyle            = rowStyle
                };

                translationFile.TranslationPairs.CollectionChanged += TranslationPairsCollectionChanged;

                dataGrid.CurrentCellChanged += DataGridOnCurrentCellChanged;

                StackPanel tabHeader = new StackPanel {
                    Orientation = Orientation.Horizontal
                };
                tabHeader.Children.Add(
                    new Image {
                    Source = new BitmapImage(new Uri(string.Format("/JsonTranslationManager;component/img/flags/{0}.png", translationFile.Name.Split('-')[0].ToLower()), UriKind.Relative))
                });
                tabHeader.Children.Add(new Label {
                    Content = translationFile.Name, VerticalAlignment = VerticalAlignment.Center
                });
                tabHeader.Children.Add(new Ellipse
                {
                    Width             = 10,
                    Height            = 10,
                    VerticalAlignment = VerticalAlignment.Center,
                    Fill = translationFile.TranslationPairs.Min(tp => tp.Score) > 0 ? Int2ColorConverter.ConvertDouble2Brush(1) : Int2ColorConverter.ConvertDouble2Brush(0)
                });
                tab.Header = tabHeader;

                //Style tabHeaderStyle = new Style();
                //tabHeaderStyle.Setters.Add(new Setter(BackgroundProperty, Brushes.DarkGray));

                Style style = new Style {
                    TargetType = typeof(TabItem)
                };
                DataTrigger trigger = new DataTrigger
                {
                    Value   = true,
                    Binding =
                        new Binding
                    {
                        Path           = new PropertyPath("IsSelected"),
                        RelativeSource = RelativeSource.Self
                    }
                };
                //set binding
                Setter setter = new Setter {
                    Property = BackgroundProperty, Value = Brushes.DarkGray
                };
                trigger.Setters.Add(setter);
                //clear the triggers
                style.Triggers.Clear();
                style.Triggers.Add(trigger);
                tab.Style = style;


                DataGridTextColumn textColumn = new DataGridTextColumn
                {
                    Header  = "Name",
                    Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
                    Binding = new Binding("Key")
                };
                dataGrid.Columns.Add(textColumn);
                dataGrid.Columns.Add(new DataGridTextColumn
                {
                    Header  = "Value",
                    Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
                    Binding = new Binding("Value")
                });
                //data
                foreach (DataGridColumn column in dataGrid.Columns)
                {
                    column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
                }
                tab.Content = dataGrid;
            }
        }
Esempio n. 29
0
        protected override void Init()
        {
            var source = new ObservableCollection <ItemViewModel>(Enumerable.Range(0, 100).Select(i => new ItemViewModel(i.ToString(), false)).ToList());
            var button = new Button {
                Text = "Click me"
            };

            var listView = new ListView
            {
                ItemsSource  = source,
                ItemTemplate = new DataTemplate(() =>
                {
                    var label = new Label();

                    var trigger = new DataTrigger(typeof(Label))
                    {
                        Binding = new Binding(nameof(ItemViewModel.Pink)), Value = true
                    };
                    trigger.Setters.Add(new Setter {
                        Value = Color.Magenta, Property = Label.TextColorProperty
                    });
                    label.Triggers.Add(trigger);

                    label.SetBinding(Label.TextProperty, nameof(ItemViewModel.Id));
                    return(new ViewCell {
                        View = label
                    });
                })
            };

            var instructions = new Label {
                FormattedText = "Enable Fast Renderers. Click the button. If the app crashes, this test has failed."
            };

            var stackLayout = new StackLayout
            {
                Children =
                {
                    instructions,
                    button,
                    listView,
                }
            };

            Content = stackLayout;

            button.Clicked += (s, e) =>
            {
                //This seems needlessly complicated, but this test requires both removing a Label (to trigger Dispose) and updating the TextColor of another set of Labels.
                instructions.Text = "Please wait...";

                Parallel.Invoke(
                    () =>
                {
                    for (int j = 0; j < source.Count; j++)
                    {
                        var i  = source[j];
                        i.Pink = int.TryParse(i.Id, out int o) && o % 2 == 0;
                    }
                },
                    async() =>
                {
                    await Task.Delay(20);
                    source.Clear();
                    await Task.Delay(2000);
                    await Device.InvokeOnMainThreadAsync(() => instructions.Text = "Success");
                });

                stackLayout.Children.Remove(instructions);
                instructions.TextColor = Color.Green;
                stackLayout.Children.Insert(0, instructions);
            };
        }
Esempio n. 30
0
        /// <summary>
        /// Initializes a new instance of the <see cref="HighlightingSelector"/> class.
        /// </summary>
        /// <param name="messagesOnMouseDoubleClick">Action to perform on double click</param>
        public HighlightingSelector(Action <object, MouseButtonEventArgs> messagesOnMouseDoubleClick)
        {
            MessagesOnMouseDoubleClick = messagesOnMouseDoubleClick;
            var oldState = ServiceLocator.Instance.ReportErrors;

            ServiceLocator.Instance.ReportErrors = false;
            var searchHighlighter = ServiceLocator.Instance.Get <ISearchHighlighter>();

            ServiceLocator.Instance.ReportErrors = oldState;

            if (searchHighlighter != null && searchHighlighter.Highlighter.Enabled)
            {
                var highlighter = searchHighlighter.Highlighter;

                var style = new Style(typeof(ListViewItem));

                var trigger = new DataTrigger
                {
                    Binding = new Binding
                    {
                        ConverterParameter = highlighter,
                        Converter          = new HighlighterConverter(highlighter),
                        Mode = BindingMode.OneWay
                    },
                    Value = "Match"
                };

                if (highlighter.Style != null)
                {
                    if (highlighter.Style.Background != null)
                    {
                        trigger.Setters.Add(
                            new Setter(
                                Control.BackgroundProperty, new SolidColorBrush((Color)highlighter.Style.Background)));
                    }

                    if (highlighter.Style.Foreground != null)
                    {
                        trigger.Setters.Add(
                            new Setter(
                                Control.ForegroundProperty, new SolidColorBrush((Color)highlighter.Style.Foreground)));
                    }
                }

                style.Triggers.Add(trigger);
                SetStyleSpacing(style);

                // TODO: make this optional based upon the settings (but will need to rebuild highlighters when the setting changes.
                RegisterDoubleClickEvent(style, messagesOnMouseDoubleClick);

                styles[highlighter] = style;
            }

            var highlightingService = ServiceLocator.Instance.Get <IHighlightingService <IHighlighter> >();

            if (highlightingService != null)
            {
                foreach (var highlighter in highlightingService.Highlighters)
                {
                    if (highlighter != null)
                    {
                        // No need to create a style if not enabled, should the status of a highlighter
                        // change, then this collection will be rebuilt.
                        if (highlighter.Enabled)
                        {
                            var style = new Style(typeof(ListViewItem));

                            var trigger = new DataTrigger
                            {
                                Binding =
                                    new Binding
                                {
                                    ConverterParameter = highlighter,
                                    Converter          = new HighlighterConverter(highlighter),
                                    Mode = BindingMode.OneWay
                                },
                                Value = "Match"
                            };

                            if (highlighter.Style != null)
                            {
                                if (highlighter.Style.Background != null)
                                {
                                    trigger.Setters.Add(
                                        new Setter(
                                            Control.BackgroundProperty,
                                            new SolidColorBrush((Color)highlighter.Style.Background)));
                                }

                                if (highlighter.Style.Foreground != null)
                                {
                                    trigger.Setters.Add(
                                        new Setter(
                                            Control.ForegroundProperty,
                                            new SolidColorBrush((Color)highlighter.Style.Foreground)));
                                }
                            }

                            // Top align values
                            style.Setters.Add(
                                new Setter(
                                    Control.VerticalContentAlignmentProperty,
                                    VerticalAlignment.Top));

                            style.Triggers.Add(trigger);

                            SetStyleSpacing(style);

                            // TODO: make this optional based upon the settings (but will need to rebuild highlighters when the setting changes.
                            RegisterDoubleClickEvent(style, messagesOnMouseDoubleClick);
                            styles[highlighter] = style;
                        }
                    }
                }
            }
        }
Esempio n. 31
0
 /// <summary>
 ///     Called when the data binding value changed.
 /// </summary>
 /// <param name="newValue">New data value.</param>
 protected virtual void OnObjectValueChanged(object newValue)
 {
     this.Trigger = newValue as DataTrigger;
 }