From 71cd3d965b97dc0075b8508f2e22b302caf4c2e1 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 27 Oct 2015 20:05:17 +0100 Subject: [PATCH] More work on XAML control theme. --- .../ContentControl.paml | 8 +- .../XamlTestApplicationPcl/ItemsControl.paml | 10 +++ samples/XamlTestApplicationPcl/ListBox.paml | 18 +++++ .../XamlTestApplicationPcl/ListBoxItem.paml | 22 ++++++ samples/XamlTestApplicationPcl/TreeView.paml | 19 +++++ .../XamlTestApplicationPcl/TreeViewItem.paml | 74 +++++++++++++++++++ .../XamlTestApplicationPcl/XamlTestApp.paml | 5 ++ .../XamlTestApplicationPcl.csproj | 15 ++++ src/Perspex.Controls/GridLength.cs | 2 +- src/Perspex.Controls/ItemsControl.cs | 2 +- .../ItemsControlStyle.cs | 2 +- .../GridLengthTests.cs | 16 ++++ .../ItemsControlTests.cs | 2 +- .../ListBoxTests.cs | 2 +- .../ListBoxTests_Single.cs | 2 +- .../SelectingItemsControlTests_Multiple.cs | 2 +- .../TreeViewTests.cs | 4 +- 17 files changed, 194 insertions(+), 11 deletions(-) create mode 100644 samples/XamlTestApplicationPcl/ItemsControl.paml create mode 100644 samples/XamlTestApplicationPcl/ListBox.paml create mode 100644 samples/XamlTestApplicationPcl/ListBoxItem.paml create mode 100644 samples/XamlTestApplicationPcl/TreeView.paml create mode 100644 samples/XamlTestApplicationPcl/TreeViewItem.paml diff --git a/samples/XamlTestApplicationPcl/ContentControl.paml b/samples/XamlTestApplicationPcl/ContentControl.paml index a73a844e83..d45974fa68 100644 --- a/samples/XamlTestApplicationPcl/ContentControl.paml +++ b/samples/XamlTestApplicationPcl/ContentControl.paml @@ -1,8 +1,12 @@  \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/ListBox.paml b/samples/XamlTestApplicationPcl/ListBox.paml new file mode 100644 index 0000000000..2a151889a0 --- /dev/null +++ b/samples/XamlTestApplicationPcl/ListBox.paml @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/ListBoxItem.paml b/samples/XamlTestApplicationPcl/ListBoxItem.paml new file mode 100644 index 0000000000..7896e521aa --- /dev/null +++ b/samples/XamlTestApplicationPcl/ListBoxItem.paml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/TreeView.paml b/samples/XamlTestApplicationPcl/TreeView.paml new file mode 100644 index 0000000000..e4a57400be --- /dev/null +++ b/samples/XamlTestApplicationPcl/TreeView.paml @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/TreeViewItem.paml b/samples/XamlTestApplicationPcl/TreeViewItem.paml new file mode 100644 index 0000000000..28ebcb39fa --- /dev/null +++ b/samples/XamlTestApplicationPcl/TreeViewItem.paml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/XamlTestApp.paml b/samples/XamlTestApplicationPcl/XamlTestApp.paml index 965fe4ee45..2bd6b163c1 100644 --- a/samples/XamlTestApplicationPcl/XamlTestApp.paml +++ b/samples/XamlTestApplicationPcl/XamlTestApp.paml @@ -5,6 +5,9 @@ + + + @@ -13,6 +16,8 @@ + + \ No newline at end of file diff --git a/samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj b/samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj index 9849e6cde4..8c61559dce 100644 --- a/samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj +++ b/samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj @@ -151,6 +151,21 @@ Designer + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + Designer diff --git a/src/Perspex.Controls/GridLength.cs b/src/Perspex.Controls/GridLength.cs index af1aa32d61..43ce1efa4c 100644 --- a/src/Perspex.Controls/GridLength.cs +++ b/src/Perspex.Controls/GridLength.cs @@ -210,7 +210,7 @@ namespace Perspex.Controls /// The . public static IEnumerable ParseLengths(string s, CultureInfo culture) { - return s.Split(new[] { ',', ' ' }).Select(x => Parse(x, culture)); + return s.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => Parse(x, culture)); } } } \ No newline at end of file diff --git a/src/Perspex.Controls/ItemsControl.cs b/src/Perspex.Controls/ItemsControl.cs index 000f1eae1e..9da2ae45ba 100644 --- a/src/Perspex.Controls/ItemsControl.cs +++ b/src/Perspex.Controls/ItemsControl.cs @@ -149,7 +149,7 @@ namespace Perspex.Controls /// protected override void OnTemplateApplied() { - Presenter = this.FindTemplateChild("itemsPresenter"); + Presenter = this.FindTemplateChild("PART_ItemsPresenter"); } /// diff --git a/src/Perspex.Themes.Default/ItemsControlStyle.cs b/src/Perspex.Themes.Default/ItemsControlStyle.cs index 91565b4471..377afe4cfa 100644 --- a/src/Perspex.Themes.Default/ItemsControlStyle.cs +++ b/src/Perspex.Themes.Default/ItemsControlStyle.cs @@ -41,7 +41,7 @@ namespace Perspex.Themes.Default { return new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", MemberSelector = control.MemberSelector, [~ItemsPresenter.ItemsProperty] = control[~ItemsControl.ItemsProperty], [~ItemsPresenter.ItemsPanelProperty] = control[~ItemsControl.ItemsPanelProperty], diff --git a/tests/Perspex.Controls.UnitTests/GridLengthTests.cs b/tests/Perspex.Controls.UnitTests/GridLengthTests.cs index f90b585d3d..b798e178da 100644 --- a/tests/Perspex.Controls.UnitTests/GridLengthTests.cs +++ b/tests/Perspex.Controls.UnitTests/GridLengthTests.cs @@ -87,5 +87,21 @@ namespace Perspex.Controls.UnitTests }, result); } + + [Fact] + public void ParseLengths_Accepts_Comma_Separators_With_Spaces() + { + var result = GridLength.ParseLengths("*, Auto, 2* ,4", CultureInfo.InvariantCulture).ToList(); + + Assert.Equal( + new[] + { + new GridLength(1, GridUnitType.Star), + GridLength.Auto, + new GridLength(2, GridUnitType.Star), + new GridLength(4, GridUnitType.Pixel), + }, + result); + } } } diff --git a/tests/Perspex.Controls.UnitTests/ItemsControlTests.cs b/tests/Perspex.Controls.UnitTests/ItemsControlTests.cs index bb57daa004..e066866a05 100644 --- a/tests/Perspex.Controls.UnitTests/ItemsControlTests.cs +++ b/tests/Perspex.Controls.UnitTests/ItemsControlTests.cs @@ -361,7 +361,7 @@ namespace Perspex.Controls.UnitTests Background = new Media.SolidColorBrush(0xffffffff), Child = new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", MemberSelector = parent.MemberSelector, [~ItemsPresenter.ItemsProperty] = parent[~ItemsControl.ItemsProperty], } diff --git a/tests/Perspex.Controls.UnitTests/ListBoxTests.cs b/tests/Perspex.Controls.UnitTests/ListBoxTests.cs index b1baf4b099..0f1a60b902 100644 --- a/tests/Perspex.Controls.UnitTests/ListBoxTests.cs +++ b/tests/Perspex.Controls.UnitTests/ListBoxTests.cs @@ -97,7 +97,7 @@ namespace Perspex.Controls.UnitTests Template = new FuncControlTemplate(CreateScrollViewerTemplate), Content = new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", [~ItemsPresenter.ItemsProperty] = parent.GetObservable(ItemsControl.ItemsProperty), } }; diff --git a/tests/Perspex.Controls.UnitTests/ListBoxTests_Single.cs b/tests/Perspex.Controls.UnitTests/ListBoxTests_Single.cs index 1d77a18af0..a6f02dc27b 100644 --- a/tests/Perspex.Controls.UnitTests/ListBoxTests_Single.cs +++ b/tests/Perspex.Controls.UnitTests/ListBoxTests_Single.cs @@ -205,7 +205,7 @@ namespace Perspex.Controls.UnitTests Template = new FuncControlTemplate(CreateScrollViewerTemplate), Content = new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", [~ItemsPresenter.ItemsProperty] = parent.GetObservable(ItemsControl.ItemsProperty), } }; diff --git a/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs b/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs index ecdc3def92..d348ab126c 100644 --- a/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs +++ b/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs @@ -434,7 +434,7 @@ namespace Perspex.Controls.UnitTests.Primitives return new FuncControlTemplate(control => new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", [~ItemsPresenter.ItemsProperty] = control[~ItemsControl.ItemsProperty], [~ItemsPresenter.ItemsPanelProperty] = control[~ItemsControl.ItemsPanelProperty], }); diff --git a/tests/Perspex.Controls.UnitTests/TreeViewTests.cs b/tests/Perspex.Controls.UnitTests/TreeViewTests.cs index 7308b016aa..2db62dd619 100644 --- a/tests/Perspex.Controls.UnitTests/TreeViewTests.cs +++ b/tests/Perspex.Controls.UnitTests/TreeViewTests.cs @@ -215,7 +215,7 @@ namespace Perspex.Controls.UnitTests { return new FuncControlTemplate(parent => new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", [~ItemsPresenter.ItemsProperty] = parent[~ItemsControl.ItemsProperty], }); } @@ -224,7 +224,7 @@ namespace Perspex.Controls.UnitTests { return new FuncControlTemplate(parent => new ItemsPresenter { - Name = "itemsPresenter", + Name = "PART_ItemsPresenter", [~ItemsPresenter.ItemsProperty] = parent[~ItemsControl.ItemsProperty], }); }