コード例 #1
0
 public static IEnumerable <IControl> GetTemplateChildren(this ITemplatedControl control)
 {
     foreach (IControl child in GetTemplateChildren((IControl)control, control))
     {
         yield return(child);
     }
 }
コード例 #2
0
ファイル: TreeViewTests.cs プロジェクト: hacklex/Perspex
 private Control CreateScrollViewerTemplate(ITemplatedControl parent)
 {
     return new ScrollContentPresenter
     {
         [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty),
     };
 }
コード例 #3
0
ファイル: ListBoxTests.cs プロジェクト: jorik041/Perspex
 private Control CreateScrollViewerTemplate(ITemplatedControl parent)
 {
     return(new ScrollContentPresenter
     {
         [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty),
     });
 }
コード例 #4
0
 public RealizedItemsInfo(IEnumerable items, bool vert, ItemVirtualizingCache cache, ITemplatedControl templatedParent)
 {
     Vert             = vert;
     _cache           = cache;
     _templatedParent = templatedParent;
     _items           = items;
 }
コード例 #5
0
 public static int GetStartIndex(ITemplatedControl templatedParent, double offset, IEnumerable items, bool vert)
 {
     if (!_controls.TryGetValue(templatedParent, out var sizes))
     {
         return(0);
     }
     return(sizes.GetStartIndex(offset, items, vert));
 }
コード例 #6
0
 public static double GetOffsetForIndex(ITemplatedControl templatedParent, int indx, IEnumerable items, bool vert)
 {
     if (!_controls.TryGetValue(templatedParent, out var sizes))
     {
         return(0);
     }
     return(sizes.GetOffsetForIndex(indx, items, vert));
 }
コード例 #7
0
 public static IControl GetControlForItem(ITemplatedControl templatedParent, object item)
 {
     if (!_controls.TryGetValue(templatedParent, out var sizes))
     {
         return(null);
     }
     return(sizes.GetControlForItem(item));
 }
コード例 #8
0
 private Control CreateScrollViewerTemplate(ITemplatedControl parent)
 {
     return(new ScrollContentPresenter
     {
         Name = "PART_ContentPresenter",
         [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty).ToBinding(),
     });
 }
コード例 #9
0
        public Control Build(ITemplatedControl templatedParent)
        {
            Contract.Requires <NullReferenceException>(templatedParent != null);

            Control root = this.build(templatedParent);

            root.TemplatedParent = templatedParent;
            return(root);
        }
コード例 #10
0
        private Mock<IControl> CreateTarget(
            ITemplatedControl templatedParent = null,
            string text = null)
        {
            var result = new Mock<IControl>();

            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((PerspexProperty)Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((PerspexProperty)TextBox.TextProperty)).Returns(text);
            return result;
        }
コード例 #11
0
        private Mock <IControl> CreateTarget(
            ITemplatedControl templatedParent = null,
            string text = null)
        {
            var result = new Mock <IControl>();

            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)TextBox.TextProperty)).Returns(text);
            return(result);
        }
コード例 #12
0
        public static bool AddContainerSize(ITemplatedControl templatedParent, object vmItem, IControl control)
        {
            VirtualizingSizes sizes;

            //            System.Console.WriteLine($"VirtualizingControls:AddContainerSize {item}, {size}");
            if (!_controls.TryGetValue(templatedParent, out sizes))
            {
                sizes = new VirtualizingSizes();
                _controls.Add(templatedParent, sizes);
            }
            return(sizes.AddContainerSize(vmItem, control));
        }
コード例 #13
0
 private Control CreateListBoxTemplate(ITemplatedControl parent)
 {
     return(new ScrollViewer
     {
         Template = new FuncControlTemplate(CreateScrollViewerTemplate),
         Content = new ItemsPresenter
         {
             Name = "PART_ItemsPresenter",
             [~ItemsPresenter.ItemsProperty] = parent.GetObservable(ItemsControl.ItemsProperty).ToBinding(),
         }
     });
 }
コード例 #14
0
ファイル: TreeViewTests.cs プロジェクト: hacklex/Perspex
 private Control CreateTreeViewTemplate(ITemplatedControl parent)
 {
     return new ScrollViewer
     {
         Template = new ControlTemplate(CreateScrollViewerTemplate),
         Content = new ItemsPresenter
         {
             Name = "itemsPresenter",
             [~ItemsPresenter.ItemsProperty] = parent.GetObservable(ItemsControl.ItemsProperty),
         }
     };
 }
コード例 #15
0
        private Mock<IControl> CreateTarget(
            ITemplatedControl templatedParent = null,
            string text = null)
        {
            var result = new Mock<IControl>();

            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)TextBox.TextProperty)).Returns(text);
            result.Setup(x => x.Bind(It.IsAny<AvaloniaProperty>(), It.IsAny<IObservable<object>>(), It.IsAny<BindingPriority>()))
                .Returns(Disposable.Empty);
            return result;
        }
コード例 #16
0
        private Mock <IControl> CreateTarget(
            ITemplatedControl templatedParent = null,
            string text = null)
        {
            var result = new Mock <IControl>();

            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue((AvaloniaProperty)TextBox.TextProperty)).Returns(text);
            result.Setup(x => x.Bind(It.IsAny <AvaloniaProperty>(), It.IsAny <IObservable <object> >(), It.IsAny <BindingPriority>()))
            .Returns(Disposable.Empty);
            return(result);
        }
コード例 #17
0
        private static bool GetContainerSize(ITemplatedControl templatedParent, object item, out ContainerInfo containerInfo)
        {
            VirtualizingSizes sizes;

            containerInfo = null;
            if (!_controls.TryGetValue(templatedParent, out sizes))
            {
                return(false);
            }
            var ret = sizes.GetContainerSize(item, out containerInfo);

            return(ret);
        }
コード例 #18
0
        private Mock <IControl> CreateTarget(
            ITemplatedControl templatedParent = null,
            string text = null)
        {
            var result = new Mock <IControl>();

            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue(Control.TemplatedParentProperty)).Returns(templatedParent);
            result.Setup(x => x.GetValue(TextBox.TextProperty)).Returns(text);
            result.Setup(x => x.Bind(It.IsAny <DirectPropertyBase <string> >(), It.IsAny <IObservable <BindingValue <string> > >()))
            .Returns(Disposable.Empty);
            return(result);
        }
コード例 #19
0
        public static IEnumerable <Control> GetTemplateControls(ITemplatedControl templated, IVisual parent)
        {
            IVisual visual = parent as IVisual;

            foreach (IVisual child in visual.VisualChildren.OfType <Control>().Where(x => x.TemplatedParent == templated))
            {
                yield return((Control)child);

                foreach (IVisual grandchild in GetTemplateControls(templated, child))
                {
                    yield return((Control)grandchild);
                }
            }
        }
コード例 #20
0
        public static T GetTemplateChild <T>(this ITemplatedControl control, string name) where T : INamed
        {
            var result = control.FindTemplateChild <T>(name);

            if (result == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        "Could not find template child '{0}' of type '{1}' in template for '{2}'.",
                                                        name,
                                                        typeof(T).FullName,
                                                        control.GetType().FullName));
            }

            return(result);
        }
コード例 #21
0
        public static int GetEndIndex(ITemplatedControl templatedParent, double startIndx, Size size, IEnumerable items, bool vert)
        {
            if (!_controls.TryGetValue(templatedParent, out var sizes))
            {
                return(0);
            }
            var offset      = 0.0;
            var indx        = (int)startIndx + 1;
            var startOffset = sizes.GetOffsetForIndex((int)startIndx, items, vert);

            while ((offset < (vert?size.Height:size.Width)) && (indx < items.Count()))
            {
                offset = sizes.GetOffsetForIndex(indx, items, vert) - startOffset;
                indx++;
            }
            return(indx);
        }
コード例 #22
0
        public static IEnumerable <Control> GetTemplateChildren(this ITemplatedControl control)
        {
            var visual = control as IVisual;

            if (visual != null)
            {
                // TODO: This searches the whole descendent tree - it can stop when it exits the
                // template.
                return(visual.GetVisualDescendents()
                       .OfType <Control>()
                       .Where(x => x.TemplatedParent == control));
            }
            else
            {
                return(Enumerable.Empty <Control>());
            }
        }
コード例 #23
0
        private static IEnumerable <IControl> GetTemplateChildren(IControl control, ITemplatedControl templatedParent)
        {
            foreach (IControl child in control.GetVisualChildren())
            {
                if (child.TemplatedParent == templatedParent)
                {
                    yield return(child);
                }

                if (child.TemplatedParent != null)
                {
                    foreach (var descendent in GetTemplateChildren(child, templatedParent))
                    {
                        yield return(descendent);
                    }
                }
            }
        }
コード例 #24
0
ファイル: TemplateExtensions.cs プロジェクト: KvanTTT/Perspex
        private static IEnumerable<IControl> GetTemplateChildren(IControl control, ITemplatedControl templatedParent)
        {
            foreach (IControl child in control.GetVisualChildren())
            {
                if (child.TemplatedParent == templatedParent)
                {
                    yield return child;
                }

                if (child.TemplatedParent != null)
                {
                    foreach (var descendent in GetTemplateChildren(child, templatedParent))
                    {
                        yield return descendent;
                    }
                }
            }
        }
コード例 #25
0
        public static Size GetEstimatedAverage(ITemplatedControl templatedParent, IEnumerable items, bool vert)
        {
            var totalKnown   = 0.0;
            var largestOther = 0.0;
            var countKnown   = 0;
            var countItems   = 0;

            foreach (var item in items)
            {
                countItems++;
                if (GetContainerSize(templatedParent, item, out var containerInfo))
                {
                    countKnown++;
                    if (vert)
                    {
                        totalKnown += containerInfo.ContainerSize.Height;
                        if (containerInfo.ContainerSize.Width > largestOther)
                        {
                            largestOther = containerInfo.ContainerSize.Width;
                        }
                    }
                    else
                    {
                        totalKnown += containerInfo.ContainerSize.Width;
                        if (containerInfo.ContainerSize.Height > largestOther)
                        {
                            largestOther = containerInfo.ContainerSize.Height;
                        }
                    }
                }
            }
            if (countKnown > 0)
            {
                if (vert)
                {
                    return(new Size(largestOther, totalKnown / countKnown));
                }
                else
                {
                    return(new Size(totalKnown / countKnown, largestOther));
                }
            }
            return(new Size());
        }
コード例 #26
0
 public IControl Build(ITemplatedControl control)
 {
     return Content.Load();
 }
コード例 #27
0
 public ControlTemplateResult Build(ITemplatedControl control) => TemplateContent.Load(Content);
コード例 #28
0
 private Mock <IObservablePropertyBag> CreateTarget(ITemplatedControl templatedParent)
 {
     return(CreateTarget(templatedParent: Observable.Never <ITemplatedControl>().StartWith(templatedParent)));
 }
コード例 #29
0
 public IControl Build(ITemplatedControl control)
 {
     return(Content.Load());
 }
コード例 #30
0
 private Mock <IPerspexObject> CreateTarget(ITemplatedControl templatedParent)
 {
     return(CreateTarget(templatedParent: templatedParent));
 }
コード例 #31
0
 public static T FindTemplateChild <T>(this ITemplatedControl control, string name) where T : INamed
 {
     return(control.GetTemplateChildren().OfType <T>().SingleOrDefault(x => x.Name == name));
 }
コード例 #32
0
 private Mock<IPerspexObject> CreateTarget(ITemplatedControl templatedParent)
 {
     return CreateTarget(templatedParent: templatedParent);
 }
コード例 #33
0
 public RealizedItemsInfo2(IEnumerable items, bool vert, ItemVirtualizingCache cache, ITemplatedControl templatedParent) : base(items, vert, cache, templatedParent)
 {
 }
コード例 #34
0
        public static Size GetEstimatedExtent(ITemplatedControl templatedParent, IEnumerable items, bool vert)
        {
            var av = GetEstimatedAverage(templatedParent, items, vert);

            return(vert ? av.WithHeight(av.Height * items.Count()) : av.WithWidth(av.Width * items.Count()));
        }
コード例 #35
0
 public IControl Build(ITemplatedControl control) => TemplateContent.Load(Content);
コード例 #36
0
 private Control CreateScrollViewerTemplate(ITemplatedControl parent)
 {
     return new ScrollContentPresenter
     {
         Name = "PART_ContentPresenter",
         [~ContentPresenter.ContentProperty] = parent.GetObservable(ContentControl.ContentProperty).ToBinding(),
     };
 }
コード例 #37
0
 private Mock<IObservablePropertyBag> CreateTarget(ITemplatedControl templatedParent)
 {
     return CreateTarget(templatedParent: Observable.Never<ITemplatedControl>().StartWith(templatedParent));
 }
コード例 #38
0
 public static IEnumerable <Control> GetTemplateControls(this ITemplatedControl control)
 {
     return(GetTemplateControls(control, (IVisual)control));
 }
コード例 #39
0
 private Control CreateListBoxTemplate(ITemplatedControl parent)
 {
     return new ScrollViewer
     {
         Template = new FuncControlTemplate(CreateScrollViewerTemplate),
         Content = new ItemsPresenter
         {
             Name = "PART_ItemsPresenter",
             [~ItemsPresenter.ItemsProperty] = parent.GetObservable(ItemsControl.ItemsProperty).ToBinding(),
         }
     };
 }