Exemple #1
0
        public override IEnumerable <DependencyObject> GetTriggersAsList(Style style)
        {
            return(style.Triggers.Select(x =>
            {
                var serialized = Css.GetSerializedTrigger(x);
                if (serialized == null)
                {
                    //serialized = "XamlWriter.Save(x)".Measure(() => XamlWriter.Save(x));
                    serialized = SerializeObject(x);
                }
                //if (x is System.Windows.DataTrigger d)
                //{
                //    var dt = new System.Windows.DataTrigger()
                //    {
                //        Binding = d.Binding,
                //        Value = d.Value
                //    };
                //    d.EnterActions.ToList().ForEach(y => dt.EnterActions.Add(y));
                //    d.ExitActions.ToList().ForEach(y => dt.ExitActions.Add(y));
                //    d.Setters.ToList().ForEach(y => dt.Setters.Add(y));
                //    return dt;
                //}

                //if (x is System.Windows.Trigger t)
                //{
                //    var tt = new System.Windows.Trigger()
                //    {
                //        Property = t.Property,
                //        SourceName = t.SourceName,
                //        Value = t.Value
                //    };
                //    t.EnterActions.ToList().ForEach(y => tt.EnterActions.Add(y));
                //    t.ExitActions.ToList().ForEach(y => tt.ExitActions.Add(y));
                //    t.Setters.ToList().ForEach(y => tt.Setters.Add(y));
                //    return tt;
                //}

                //if (x is System.Windows.EventTrigger e)
                //{
                //    var et = new System.Windows.EventTrigger()
                //    {
                //        SourceName = e.SourceName,
                //        RoutedEvent = e.RoutedEvent
                //    };
                //    e.Actions.ToList().ForEach(y => et.Actions.Add(y));
                //    e.EnterActions.ToList().ForEach(y => et.EnterActions.Add(y));
                //    e.ExitActions.ToList().ForEach(y => et.ExitActions.Add(y));

                //    return et;
                //}

                var trigger = (DependencyObject)XamlReader.Parse(serialized);

                Css.SetSerializedTrigger(trigger, serialized);

                return trigger;
            }).ToList());
        }