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 } }; }
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); }
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); }
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 }); }
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; }
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 } }; }
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); }
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); } }
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); }
//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); }
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); }
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; }
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)); }
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; }
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); } }
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 }
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; } }
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); }; }
/// <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; } } } } }
/// <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; }