Exemple #1
0
        ContentPresenter CreateChild(object item)
        {
            if (item == null)
            {
                return(null);
            }

            var content = FindChild(item);

            if (content != null)
            {
                return(content);
            }

            // the actual child to be added.  cp.Tag is a reference to the TabItem
            content = new ContentPresenter
            {
                Content = (item is TabItem) ? (item as TabItem).Content : item
            };

            content.Bind(ContentPresenter.ContentTemplateProperty,
                         "SelectedContentTemplate", this, System.Windows.Data.BindingMode.OneWay);
            content.Bind(ContentPresenter.ContentTemplateSelectorProperty,
                         "SelectedContentTemplateSelector", this, System.Windows.Data.BindingMode.OneWay);
            content.Bind(ContentPresenter.ContentStringFormatProperty,
                         "SelectedContentStringFormat", this, System.Windows.Data.BindingMode.OneWay);

            content.Visibility = Visibility.Collapsed;
            content.Tag        = (item is TabItem) ? item : (this.ItemContainerGenerator.ContainerFromItem(item));
            PART_Items.Children.Add(content);
            return(content);
        }
        public void Changing_Resource_In_Templated_Parent_Should_Affect_Templated_Child()
        {
            var target = new ContentControl
            {
                Resources =
                {
                    { "red", Brushes.Red },
                },
                Template = new FuncControlTemplate <ContentControl>((x, scope) =>
                {
                    var result = new ContentPresenter
                    {
                        Name = "PART_ContentPresenter",
                        [!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
                    }.RegisterInNameScope(scope);

                    result.Bind(ContentPresenter.BackgroundProperty, result.GetResourceObservable("red"));

                    return(result);
                }),
            };

            var root = new TestRoot(target);

            target.ApplyTemplate();

            var contentPresenter = Assert.IsType <ContentPresenter>(target.GetVisualChildren().Single());

            Assert.Same(Brushes.Red, contentPresenter.Background);

            target.Resources["red"] = Brushes.Green;

            Assert.Same(Brushes.Green, contentPresenter.Background);
        }
Exemple #3
0
        private Control DefaultTemplate(Window c)
        {
            Border border = new Border();

            border.Background = new Perspex.Media.SolidColorBrush(0xffffffff);
            ContentPresenter contentPresenter = new ContentPresenter();

            contentPresenter.Bind(
                ContentPresenter.ContentProperty,
                this.GetObservable(Window.ContentProperty),
                BindingPriority.Style);
            border.Content = contentPresenter;
            return(border);
        }
        void UpdateTemplate()
        {
            if (Node != null)
            {
                bindings.Add(expander.Bind(ToggleButton.IsVisibleProperty, new Binding("ShowExpander")
                {
                    Source = Node
                }));
                bindings.Add(expander.Bind(ToggleButton.IsCheckedProperty, new Binding("IsExpanded")
                {
                    Source = Node
                }));
                bindings.Add(icon.Bind(ContentPresenter.IsVisibleProperty, new Binding("ShowIcon")
                {
                    Source = Node
                }));
                bindings.Add(checkBoxContainer.Bind(Border.IsVisibleProperty, new Binding("IsCheckable")
                {
                    Source = Node
                }));
                bindings.Add(checkBox.Bind(CheckBox.IsCheckedProperty, new Binding("IsChecked")
                {
                    Source = Node
                }));
                bindings.Add(textContainer.Bind(Border.IsVisibleProperty, new Binding("IsEditing")
                {
                    Source = Node, Converter = BoolConverters.Inverse
                }));
                bindings.Add(textContent.Bind(ContentPresenter.ContentProperty, new Binding("Text")
                {
                    Source = Node
                }));
                RaisePropertyChanged(IconProperty, null, Icon);
            }

            spacer.Width = CalculateIndent();

            if (ParentTreeView.Root == Node && !ParentTreeView.ShowRootExpander)
            {
                expander.IsVisible = false;
            }
            else
            {
                expander.ClearValue(IsVisibleProperty);
            }
        }
Exemple #5
0
        protected override ColumnDefinition GetColumnDefinition(ContentPresenter Child, int Index)
        {
            var Result = base.GetColumnDefinition(Child, Index);

            var TreeViewItem = PART_TreeViewItem ?? this.GetParent <TreeViewItem>();

            if (TreeViewItem == null)
            {
                throw new InvalidOperationException("TreeViewRowHeader must be hosted in a control that inherits TreeViewItem.");
            }

            var TreeView = PART_TreeView ?? TreeViewItem.GetParent <TreeView>();

            try
            {
                if (TreeView is TreeViewExt && TreeView.As <TreeViewExt>().Columns.Count > 0 && Index < TreeView.As <TreeViewExt>().Columns.Count)
                {
                    var Column = TreeView.As <TreeViewExt>().Columns[Index];

                    Result = new ColumnDefinition();

                    var NodeDepth = TreeViewItem.GetDepth();

                    var a = Index == 0 ? new TreeViewColumnGridLengthConverter(ColumnOffset) : null;
                    var b = Index == 0 ? new TreeViewColumnDoubleConverter(ColumnOffset) : null;
                    var c = Index == 0 ? new TreeViewColumnDoubleConverter(ColumnOffset) : null;

                    var n = Index == 0 ? NodeDepth.ToDouble() as object : null;

                    Result.Bind(ColumnDefinition.WidthProperty, Column, "Width", a, n, BindingMode.OneWay, UpdateSourceTrigger.PropertyChanged);
                    Result.Bind(ColumnDefinition.MinWidthProperty, Column, "MinWidth", b, n, BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged);
                    Result.Bind(ColumnDefinition.MaxWidthProperty, Column, "MaxWidth", c, n, BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged);

                    Child.Bind(ContentPresenter.MarginProperty, Column, "ContentMargin");
                }
            }
            catch
            {
                Result = null;
            }

            return(Result);
        }