From 90273c74dd5d1f14213dc6cf86f76a239d6c0ddb Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 24 Dec 2014 15:04:37 +0000 Subject: [PATCH] Added missing Ids to templates. And allow ContentControl to not have a ContentPresenter in its control template, as one isn't needed for TreeViewItem for example. --- Perspex.Controls/ContentControl.cs | 10 +++++++--- Perspex.Themes.Default/ButtonStyle.cs | 1 + Perspex.Themes.Default/CheckBoxStyle.cs | 1 + Perspex.Themes.Default/RadioButtonStyle.cs | 1 + Perspex.Themes.Default/TabItemStyle.cs | 1 + Perspex.Themes.Default/ToggleButtonStyle.cs | 1 + 6 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Perspex.Controls/ContentControl.cs b/Perspex.Controls/ContentControl.cs index decaf5158a..d51c85176b 100644 --- a/Perspex.Controls/ContentControl.cs +++ b/Perspex.Controls/ContentControl.cs @@ -79,9 +79,13 @@ namespace Perspex.Controls this.presenterSubscription = null; } - this.presenter = this.GetTemplateChild("presenter"); - this.presenterSubscription = this.presenter.ChildObservable - .Subscribe(x => this.logicalChild.SingleItem = x); + this.presenter = this.FindTemplateChild("presenter"); + + if (this.presenter != null) + { + this.presenterSubscription = this.presenter.ChildObservable + .Subscribe(x => this.logicalChild.SingleItem = x); + } } } } diff --git a/Perspex.Themes.Default/ButtonStyle.cs b/Perspex.Themes.Default/ButtonStyle.cs index 925d9c1ae6..e32d4517ff 100644 --- a/Perspex.Themes.Default/ButtonStyle.cs +++ b/Perspex.Themes.Default/ButtonStyle.cs @@ -78,6 +78,7 @@ namespace Perspex.Themes.Default Padding = new Thickness(3), Content = new ContentPresenter { + Id = "presenter", [~ContentPresenter.ContentProperty] = control[~Button.ContentProperty], [~ContentPresenter.HorizontalAlignmentProperty] = control[~Button.HorizontalContentAlignmentProperty], [~ContentPresenter.VerticalAlignmentProperty] = control[~Button.VerticalContentAlignmentProperty], diff --git a/Perspex.Themes.Default/CheckBoxStyle.cs b/Perspex.Themes.Default/CheckBoxStyle.cs index b55de93331..2ee0b0105c 100644 --- a/Perspex.Themes.Default/CheckBoxStyle.cs +++ b/Perspex.Themes.Default/CheckBoxStyle.cs @@ -83,6 +83,7 @@ namespace Perspex.Themes.Default }, new ContentPresenter { + Id = "presenter", Margin = new Thickness(4, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, [~ContentPresenter.ContentProperty] = control[~CheckBox.ContentProperty], diff --git a/Perspex.Themes.Default/RadioButtonStyle.cs b/Perspex.Themes.Default/RadioButtonStyle.cs index 1f374df041..ac56bdcd61 100644 --- a/Perspex.Themes.Default/RadioButtonStyle.cs +++ b/Perspex.Themes.Default/RadioButtonStyle.cs @@ -82,6 +82,7 @@ namespace Perspex.Themes.Default }, new ContentPresenter { + Id = "presenter", Margin = new Thickness(4, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, [~ContentPresenter.ContentProperty] = control[~RadioButton.ContentProperty], diff --git a/Perspex.Themes.Default/TabItemStyle.cs b/Perspex.Themes.Default/TabItemStyle.cs index eac19be1b9..93c38f03a4 100644 --- a/Perspex.Themes.Default/TabItemStyle.cs +++ b/Perspex.Themes.Default/TabItemStyle.cs @@ -41,6 +41,7 @@ namespace Perspex.Themes.Default { return new ContentPresenter { + Id = "presenter", [~ContentPresenter.ContentProperty] = control[~TabItem.HeaderProperty], }; } diff --git a/Perspex.Themes.Default/ToggleButtonStyle.cs b/Perspex.Themes.Default/ToggleButtonStyle.cs index a8bd8d7155..038c934143 100644 --- a/Perspex.Themes.Default/ToggleButtonStyle.cs +++ b/Perspex.Themes.Default/ToggleButtonStyle.cs @@ -93,6 +93,7 @@ namespace Perspex.Themes.Default Padding = new Thickness(3), Content = new ContentPresenter { + Id = "presenter", [~ContentPresenter.ContentProperty] = control[~ToggleButton.ContentProperty], [~ContentPresenter.HorizontalAlignmentProperty] = control[~ToggleButton.HorizontalContentAlignmentProperty], [~ContentPresenter.VerticalAlignmentProperty] = control[~ToggleButton.VerticalContentAlignmentProperty],