From 22fbef225f92f272606b2adfbf234bf0c129fec7 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Tue, 21 Mar 2017 12:05:33 +0100 Subject: [PATCH 01/20] Code review bugs result for MasterDetail --- .../.template.config/template.json | 42 +--- .../MasterDetailPage/DessertService.cs | 192 ------------------ .../MasterDetailPage/Images/60Banana.png | Bin 1893 -> 0 bytes .../MasterDetailPage/Images/60Lemon.png | Bin 2693 -> 0 bytes .../MasterDetailPage/Images/60Mint.png | Bin 2677 -> 0 bytes .../MasterDetailPage/Images/60Orange.png | Bin 2692 -> 0 bytes .../Images/60SauceCaramel.png | Bin 2168 -> 0 bytes .../Images/60SauceChocolate.png | Bin 2123 -> 0 bytes .../Images/60SauceStrawberry.png | Bin 2240 -> 0 bytes .../Images/60SprinklesChocolate.png | Bin 4600 -> 0 bytes .../Images/60SprinklesRainbow.png | Bin 5464 -> 0 bytes .../Images/60SprinklesVanilla.png | Bin 3890 -> 0 bytes .../MasterDetailPage/Images/60Strawberry.png | Bin 2394 -> 0 bytes .../MasterDetailPage/Images/60Vanilla.png | Bin 3286 -> 0 bytes .../MasterDetailPagePage.xaml | 84 +++----- .../MasterDetailPagePage.xaml.cs | 11 + .../MasterDetailPageViewModel.cs | 79 ++++--- .../{DessertModel.cs => SampleModel.cs} | 3 +- .../MasterDetailPage/SampleModelService.cs | 35 ++++ 19 files changed, 113 insertions(+), 333 deletions(-) delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/DessertService.cs delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Banana.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Lemon.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Mint.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Orange.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceCaramel.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceChocolate.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceStrawberry.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SprinklesChocolate.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SprinklesRainbow.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60SprinklesVanilla.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Strawberry.png delete mode 100644 templates/Pages/MasterDetail/MasterDetailPage/Images/60Vanilla.png rename templates/Pages/MasterDetail/MasterDetailPage/{DessertModel.cs => SampleModel.cs} (78%) create mode 100644 templates/Pages/MasterDetail/MasterDetailPage/SampleModelService.cs diff --git a/templates/Pages/MasterDetail/.template.config/template.json b/templates/Pages/MasterDetail/.template.config/template.json index 50bab9355..0a02f2b08 100644 --- a/templates/Pages/MasterDetail/.template.config/template.json +++ b/templates/Pages/MasterDetail/.template.config/template.json @@ -29,47 +29,11 @@ "path": ".\\MasterDetailPage\\MasterDetailPageViewModel.cs" }, { - "path": ".\\MasterDetailPage\\DessertModel.cs" + "path": ".\\MasterDetailPage\\SampleModel.cs" }, { - "path": ".\\MasterDetailPage\\DessertService.cs" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Banana.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Lemon.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Mint.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Orange.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SauceCaramel.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SauceChocolate.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SauceStrawberry.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SprinklesChocolate.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SprinklesRainbow.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60SprinklesVanilla.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Strawberry.png" - }, - { - "path": ".\\MasterDetailPage\\Images\\60Vanilla.png" - } + "path": ".\\MasterDetailPage\\SampleModelService.cs" + } ], "symbols": { "rootNamespace": { diff --git a/templates/Pages/MasterDetail/MasterDetailPage/DessertService.cs b/templates/Pages/MasterDetail/MasterDetailPage/DessertService.cs deleted file mode 100644 index cab08b67e..000000000 --- a/templates/Pages/MasterDetail/MasterDetailPage/DessertService.cs +++ /dev/null @@ -1,192 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace ItemNamespace.MasterDetailPage -{ - public class DessertService - { - public async Task> GetDataAsync() - { - await Task.Delay(0); - - var data = new List(); - - data.Add(new DessertModel - { - Title = "Banana Blast Frozen Yogurt", - Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet", - Picture = "ms-appx:///MasterDetailPage/Images/60Banana.png", - Link = "http://www.adatum.com/", - Category = "Low-fat frozen yogurt", - Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat", - }); - - data.Add(new DessertModel - { - Title = "Lavish Lemon Ice", - Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est", - Picture = "ms-appx:///MasterDetailPage/Images/60Lemon.png", - Link = "http://www.adventure-works.com/", - Category = "Sorbet", - Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci", - - }); - - data.Add(new DessertModel - { - Title = "Marvelous Mint", - Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis", - Picture = "ms-appx:///MasterDetailPage/Images/60Mint.png", - Link = "http://www.adventure-works.com/", - Category = "Gelato", - Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum", - - }); - - data.Add(new DessertModel - { - Title = "Creamy Orange", - Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis", - Picture = "ms-appx:///MasterDetailPage/Images/60Orange.png", - Link = "http://www.alpineskihouse.com/", - Category = "Sorbet", - Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant", - - }); - - data.Add(new DessertModel - { - Title = "Succulent Strawberry", - Subtitle = "Senectus sem lacus erat sociosqu eros suscipit primis nibh nisi nisl gravida torquent", - Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png", - Link = "http://www.baldwinmuseumofscience.com/", - Category = "Sorbet", - Description = "Est auctor inceptos congue interdum egestas scelerisque pellentesque fermentum ullamcorper cursus dictum lectus suspendisse condimentum libero vitae vestibulum lobortis ligula fringilla euismod class scelerisque feugiat habitasse diam litora adipiscing sollicitudin parturient hendrerit curae himenaeos imperdiet ullamcorper suspendisse nascetur hac gravida pharetra eget donec leo mus nec non malesuada vestibulum pellentesque elit penatibus vestibulum per condimentum porttitor sed adipiscing scelerisque ullamcorper etiam iaculis enim tincidunt erat parturient sem vestibulum eros", - - }); - - data.Add(new DessertModel - { - Title = "Very Vanilla", - Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est", - Picture = "ms-appx:///MasterDetailPage/Images/60Vanilla.png", - Link = "http://www.blueyonderairlines.com/", - Category = "Ice Cream", - Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac", - - }); - - data.Add(new DessertModel - { - Title = "Creamy Caramel Frozen Yogurt", - Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet", - Picture = "ms-appx:///MasterDetailPage/Images/60SauceCaramel.png", - Link = "http://www.adatum.com/", - Category = "Low-fat frozen yogurt", - Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat", - - }); - - data.Add(new DessertModel - { - Title = "Chocolate Lovers Frozen Yogurt", - Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est", - Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png", - Link = "http://www.adventure-works.com/", - Category = "Low-fat frozen yogurt", - Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci", - - }); - - data.Add(new DessertModel - { - Title = "Roma Strawberry", - Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis", - Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png", - Link = "http://www.adventure-works.com/", - Category = "Gelato", - Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum", - - }); - - data.Add(new DessertModel - { - Title = "Italian Rainbow", - Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis", - Picture = "ms-appx:///MasterDetailPage/Images/60SprinklesRainbow.png", - Link = "http://www.alpineskihouse.com/", - Category = "Gelato", - Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant", - - }); - - data.Add(new DessertModel - { - Title = "Strawberry", - Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est", - Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png", - Link = "http://www.blueyonderairlines.com/", - Category = "Ice Cream", - Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac", - - }); - - data.Add(new DessertModel - { - Title = "Strawberry Frozen Yogurt", - Subtitle = "Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet", - Picture = "ms-appx:///MasterDetailPage/Images/60Strawberry.png", - Link = "http://www.adatum.com/", - Category = "Low-fat frozen yogurt", - Description = "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat", - - }); - - data.Add(new DessertModel - { - Title = "Bongo Banana", - Subtitle = "Quisque vivamus bibendum cursus dictum dictumst dis aliquam aliquet etiam lectus eleifend fusce libero ante facilisi ligula est", - Picture = "ms-appx:///MasterDetailPage/Images/60Banana.png", - Link = "http://www.adventure-works.com/", - Category = "Sorbet", - Description = "Enim cursus nascetur dictum habitasse hendrerit nec gravida vestibulum pellentesque vestibulum adipiscing iaculis erat consectetuer pellentesque parturient lacinia himenaeos pharetra condimentum non sollicitudin eros dolor vestibulum per lectus pellentesque nibh imperdiet laoreet consectetuer placerat libero malesuada pellentesque fames penatibus ligula scelerisque litora nisi luctus vestibulum nisl ullamcorper sed sem natoque suspendisse felis sit condimentum pulvinar nunc posuere magnis vel scelerisque sagittis porttitor potenti tincidunt mattis ipsum adipiscing sollicitudin parturient mauris nam senectus ullamcorper mollis tristique sociosqu suspendisse ultricies montes sed condimentum dis nostra suscipit justo ornare pretium odio pellentesque lacus lorem torquent orci", - - }); - - data.Add(new DessertModel - { - Title = "Firenze Vanilla", - Subtitle = "Litora luctus magnis arcu lorem morbi blandit faucibus mattis commodo hac habitant inceptos conubia cubilia nulla mauris diam proin augue eget dolor mollis interdum lobortis", - Picture = "ms-appx:///MasterDetailPage/Images/60Vanilla.png", - Link = "http://www.adventure-works.com/", - Category = "Gelato", - Description = "Vestibulum vestibulum magna scelerisque ultrices consectetuer vehicula rhoncus pellentesque massa adipiscing platea primis sodales parturient metus sollicitudin morbi vestibulum pellentesque consectetuer pellentesque volutpat rutrum sollicitudin sapien pellentesque vestibulum venenatis consectetuer viverra est aliquam semper hac maecenas integer adipiscing sociis vulputate ullamcorper curabitur pellentesque parturient praesent neque sollicitudin pellentesque vestibulum suspendisse consectetuer leo quisque phasellus pede vestibulum quam pellentesque sollicitudin quis mus adipiscing parturient pellentesque vestibulum", - - }); - - data.Add(new DessertModel - { - Title = "Choco-wocko", - Subtitle = "Leo mus nec nascetur dapibus non fames per felis ipsum pharetra egestas montes elit nostra placerat euismod enim justo ornare feugiat platea pulvinar sed sagittis", - Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png", - Link = "http://www.alpineskihouse.com/", - Category = "Sorbet", - Description = "Consequat condimentum consectetuer vivamus urna vestibulum netus pellentesque cras nec taciti non scelerisque adipiscing parturient tellus sollicitudin per vestibulum pellentesque aliquam convallis ullamcorper nulla porta aliquet accumsan suspendisse duis bibendum nunc condimentum consectetuer pellentesque scelerisque tempor sed dictumst eleifend amet vestibulum sem tempus facilisi ullamcorper adipiscing tortor ante purus parturient sit dignissim vel nam turpis sed sollicitudin elementum arcu vestibulum risus blandit suspendisse faucibus pellentesque commodo dis condimentum consectetuer varius aenean conubia cubilia facilisis velit mauris nullam aptent dapibus habitant", - - }); - - data.Add(new DessertModel - { - Title = "Chocolate", - Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est", - Picture = "ms-appx:///MasterDetailPage/Images/60SauceChocolate.png", - Link = "http://www.blueyonderairlines.com/", - Category = "Ice Cream", - Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac", - - }); - - return data; - } - } -} diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60Banana.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60Banana.png deleted file mode 100644 index b4fc6747af915e277ab417af435d2a940008b235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1893 zcmV-r2b%baP)|9Gs8&?#aH#7e59S4GNTgiwDffOlJU4Ys}*ijJ)cCAt=?yjN>x~3A@78YI8 zMYASSqg2WwU8K#9RH~G&5~MUxREitICkfbu7=LEw^}cyCV`GfxZ_k*HP%<+9op;YY z_w()pi7&oo&eO#*=j=Lnfcd(98j3KXUiDtiGvaPD14fy{#C(_QsiC=^hTvw9qnL&IEez@*0WH9y7!+@)FL^Ur416Evx6f8mU=_NU> z{)+7wV=sJ4>QKU~5=F@;xqG!a7&x?Ow!(y7!f$dIugt;z&!wF(uF^!K`YCH{R zeiqj!aDJ1#Boy}ub6qIS#nk`fb4Zv(?N=CO394W|UMa4A46g1SW>kk<8bGqGA5^mV z^^&wRUtN-oI7V&SXV2!Gp965;6>{;4C3UjVceplOY1t#*A7n1Gn|1 zQIY32<)dZW`3Y)ZJxub=*c81lKKtk_4JQ%+t0PS5)+Q0|?IXxWZTL27Yy&{Y3_%O@ zxwhQ^IoC6z^MdHv!B61uL8^zrEvcRXZ~6Y)22Un|`YOp!^jLlIORIX;_yz#L09%o- z(mD)*+RXDwtOh*X(@0@C}11zpf@^=+_*^q%i7)r3Y`zYrJ9Kof&-Y1>LrwYN(Trq z(%sKuiF@Krj0De57FLWy>j4jGUO{cd(=8Z30@h~&;46yj6HaAM+poa+HNz+KjbXB4 zTP&u02s0#f>s+zA>k)A?c8Zgc;EZ3WM0$59(*03f<8$*3$7VfBM#S{q;GEC zylw+V5yDb|4qCaqc^d2UU#_PR=Fvh)gq=06d8=qiTy<8jTdkZSyQ5-r{z6@*->|3`g<$;H!K ztZ@WVR4TP`7tq4ZLGj%>&^UDIDMbs}g|vUi#j|P#7N$*OxL!Q}h29k8HW7z-RP+RE zH~}8(a0J{Pm6pV;exH?uPX3ka9ENJ1d*?~p59fBbAO8E#U3-cJ2@^RX4Ny4`~~rTL+dd@C#TPvKs=c(+He4>tS--5hRoo z5NTo!F`?e_jz@)OLR`VcT?`0|yNw0uxWyx7p#CnE;1#D7z_II6B-at}DJ5rubN&Cv fhnoHRPk;dc|BO&Se#^{V00000NkvXXu0mjf>rr=M diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60Lemon.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60Lemon.png deleted file mode 100644 index d645b7e07a946fc670941061a8c5162e78ba6137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2693 zcmV;03VQX4P)|0N48&w+j%s8Gnad0*zkT}IrS0$E^nhODG4~szB16s8`t+XrXabb}-u~K{3 zN+7B&2SDlx3Beu<0%=dMhrM-0Z_r*^t+Xu_QN7I{DDB3?iQ_*rv%fble)G+HZ|oV{ zY1-n^XyiDa_rBlzzVG+_nKwpj^{=U)(_yB5X2%fl5bzN25bzN25bzN2{vGLiHk0RU zq@0T9RB#Qxwep6Q_pg%=17NRl(`%G*O*P7qzY(7@MI$qB_}2#vFqG+SedE=xq`Z29 z+t|{S8GgeyvWv#}Gkc+SW3a^ol<8J4cF2gbu0gfgbFW((s06K zF>7`a-*{LWc4Gy$z|4XAwgfwWbWqwJ3}9%LOD~U}Jz`FsFmlhCV~gDf*}mdczjE)M z_i9&_fox;^S!jFz0ekL_yYY8fu~r^9t?AbdyBBNp>NlPBv&>#3okP`=zcb9yeFN+@ zzlTC3W-_N=w`Trgr2Dl%ueITVvX4iZck9NBA#gdCQ*cwn3y1Fh4%RIB{9vHeyYw1zngwD^G4 z!7aEEw`*h_Tf}rJKaz7cXTt1hwIpRxuw)gj=Wf=w-mF(&@!YkT!&)OR?7FwVI=B(H zV-O6bV#cI28+CQ@e=vak4EgI2OGWrCJT_TEpE<7HImDl(Qj`Y!g=Rz5Ty-kf!lMd@rAO)*LOC5 zk6~rZv!@|INU(temP$OtTQ%N5A@!{{eAX@5b+6p%FV6#Z*NLbwRLH&nGd>{XELD8aWK_ImWaDE7X>-hWrdcfB0_I$< zI+ooL_RIqksQdQqN5$>cHmeb)SmTC6a_aejuDyC3>WTxnOzm0vFLI-sfF=4EZ1eEuc^gGN2Z?ER0n95ah56zw1eI2L36U8m3S<1an{Tw23^*tJKo#Vh9HD=9 zZW2(yOyGV1dlay+oOX5vT9SSbEdk-(yT51?Pea5Zu2=wussWzbvxHFF3BYt%U$=D$ zSGWdU0xB2;Hu^E?$X>BdyY>}$5*3jJ{?RtK`EL*=x&RrBD7$-yM|iO z_kbD~xRoYCs5B7rdjgo{Zj;A4wP`rPL?c9w0boAU?*7*_3yu1x{dTaEG(FNiFP_gX z&x=r@B~qmOu5d!0q8Pcc$%|aKh*ExV-VIbpRFG_;Y~-;GY&Sjq~QD7m{K+Py3IX(bCt_SDVBxjKp zw?ioDOT%h8LPLc_q)dm7iI~hWAbH}M6Aizu`lry9UpBvt+Yy{mS|C58gCN35fK~N| z1nXPFlN|sf4Tfg4H=?*hb}7^az+5>j*&^W=#%!1c1YQK^9d~ssd%0NrZ@K&g&1AGT z5(T*HQ`H!`bfzd++TFg=d2WH0Tcb!nsCr=+PV-;l$Ec{nfP(r`20%Su1LNwH!Y2aTy0p%Vyf6rY+vI{ZeR_%rU8of*ACf0~NAwz~Fkq z)uCt8eC@L*MQc*;$>GOkQm_#vByI5`ClTw2!7+uR-ghWJ$K2)<_sIj@LF3;3K#EVa zO{Wj{VSa}Gkv6I{u5a-gITo?P*%bt!+dtxO@QDkUQ5T_Wr~Imt-xi_>R`4L7~{_- z+N76k2LN*wYS=5MBxi2>^BFt$F^|tNAD2lkfZLe^DBw!}LD&7BXU`Z!3)t@IK?m$sW1Sn|GXThe2Wy)liK(8PKR zQSB~?rS@}US`_97V(Ve=FL_`}_T;WzSMXTXy7sHqty5C&+2ew?HZT+h93a}%9&R7b zAGKyq_r84?$sEk*e%n4A7+&=v+rp*1;qVY{5GSp}gs%X!dr{qA0k9X4OWj|u00gk_ z`>Ie2s@1@PqOij~cqX`t{B)YEgZ%7qw9O^g+V=3|MmVhyPVPxov`a zE49zZ@O9cD;3424;3424;3424;CpubUw{Ds3I-5OTw00000NkvXXu0mjfhm9Qu diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60Mint.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60Mint.png deleted file mode 100644 index 2503d19063dd3782a5db58640e816a261217f771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2677 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 diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60Orange.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60Orange.png deleted file mode 100644 index 3cab35f1c5a436d2f2bb89361b0b18da4d319e58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2692 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 diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceCaramel.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceCaramel.png deleted file mode 100644 index d3dac4358ad06ebabb872184f60de963bf922e75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2168 zcmV-;2#5EHP)&#owS9jar&wqYok{%N^PTT}=iF;V^ykkW3DavV7R+?cd(F zNdK$-&To}>`5y1}bs!J6fSsvr*m6?M3W>hZnQwH=LM>G(PV! zK2k7V$gm^A4m~1r58#3P>wpLI(MxaTndb7V;ugwty<0UStRTkBoM>&x;l&vFm%h7( z*<;rKExjBryoqY*{F<0w8zUd|>|+khNt{6?W56Nroz<(7MlMhHJs`KpbJXXfmty%> z3*C}h_XV1(X;7Ac++Td`ul*q&Jh9RCiz9iuXXoA+i4fQbNvv=(I+6W1Mj0;qyHH)@ zWY$Se?a#C~9-_J6uRIq&KJ)Ij43hcybsaTdXq!;q{hJ6jNUrG+zVsO!m;^=RR6!bEz~?q5%s2d0kF{Sz!6^MXhj5SMYx54 ziG+G(6X7l5Gg8B4?@D*Q6*V(xT6{5BEj8xMXd%_%om)-D$((>Gc_5zA35nz|Dsgr) z_Bw2U{L6$4V}Orc8|^iOK2M!bqi8$7!`McbuHhjr1~7{|8RO7d#*KoI%)HDPqLqdc%V zyA~MWqV=mewqs+UGqL4f?9GIQR6jf|5BjpHc+w92&}5p64l3+ zKrlRto4?6c`^3`t0Wlow$RSG;sHHnzK?T&-1{cA+tK$XZo*roroP22I;DDC0YI83r z9F9RYxN-^kJm}HWfMf9|%hNsDaK=COw#aEF$zp}v)Hnr-=4*bHbcKsxr+ctp6Ur<< zO$?bAc3_?)Zdm<94(*!<#(IEUMQKeF?8+X>q^-x}BCxSylfc9> zo;Xu4u9-4X%JjD2FfuraSP57p1%t)G^>_0w;=0jEI!)5*D{Jj_Hl@l`(h@ixsZj$4 zjU7%FWdoaY|JkKX#yY9t4mc%No`d|fQmhBXRDk2W;&E_z;*)N^(a91g30kfRCBGfE z73|;zOgnuXSJob0i9)8WOK+Wk+nGW@gTBSb60Ic!ylAFnIbIqYr=Ui(aj%oRb%KF9 z3RUGJ)kOVoZBS{2!d;8J#f7#EZZB2yg1XSgJ1mM!N$(f}OzFr*Tpx(Uolpm;U8PV1 zAxc`Y)prFc?ybm@HnYv(xG^OK6W|uH$gA z6X0?mtLc-9PoL83U3PB@)I#aXHnc>O{6u6oq>Juj~&TbDQ)%oDUG8GPLP*>7mg zTIB~%=x;+XUdVHFooIW|hc!YiN*mNYI0QEvNZTtVuXj0zy@mtgk?R&VVQz0S*S+ diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceChocolate.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceChocolate.png deleted file mode 100644 index 9c4ea3bb27e12ecb64ff9e678ff575ed2e0f3557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2123 zcmV-R2(WZL1(AqAP>c+zX&gaF zXbB)fVoN>ai?$o@?(ChJyEa`}Q53D$bLQT2?qlxe)~}DoGjdnHFjbtH&w9P?kNW)S za%b%+|NhC+%w%ac@wT3f=yh`Rwz|3AY!b~a5n3)0H@(Lih)<3U}s0nMiw3%{)Pp3;iq2~mY)>wmvf^NvY4CA zhNEwT#!S2MFOQx(e&;Se`1|Smqw~|h@h40qg?aYjkJh?9I6Q*&2)aW%hjU{E#1)vm z{OITLV#(d%NyBcAZh0C?6!Dpv2M-Z!Tx<@^2bHbq@&g;M?jPjI+ih3CVdUrkoSYoh z0p2b?4-SnGYfNd(l4v$%JR|SI2gr}>wUfiTsln^}6?~nkrKW&E^|azJ_7WK!NIpHc zXv*+|%63W?=0|M%#3MghG=&W^AJ(dAg#8pP9EM$9dW^)KdH-Q;4^@FITI@KV!vd-0 zwUaMDVM=9v@0BcIqtGRmOM`5)50{a#CEj`Z;T;5D5^$~?fayZuLB^8EYJ@kzAI*(T zbPX`YZLk_qS09$8n2Zv@C~r-rJj4o+KkKUzrjZl(#kA&01u$X0_uUVg)gX0|0X%jy z0Mj*HUX1f?Bx)S5)>qW|!jx$pmM&oO?KllXLBh#Zw1A5@qQw*TZ3{4TX#yC+zD4nv zI$+Z6$W-j|{4CL*H6;qCDcc>uw79TiCt6rjirSgCbAVd{X50YKkle1F&{4puoDL=1 z8j5OqEFcK8Z0sgrQ`Q~VYtf1@G-AizE&zs+nZ+|KAK9$TX1zGgmu&Gg8(+eTikjP^ z`8r-K)%Pom-pE#5CS&c)v4D{PAs#?NvCa6qzIO!&!wN_cth9&*VF^m?5#r+m16_IXyP}%l5 zD*zbl&U*hnCo+D*&QK#&9=ALk(gna|;V|0Z?l@lfQHTP3%`6UoCA0klDgq6SVCfn) zR)r42TPwEF7SJ&wFoTc;8<21t7DT*-RY7TWWa$=ZBMs|cx0q8rz=@?;91i)3v5E!n z-(j;Mxu35t>7<)@rOw%kr8rf$xDd&Y-_(MJHL!5LFr^QzoC{V}N?X20PI((FsU{D` z3L+-;TV-*1OEO?URduY~YG}LwXyI>)5xLt^Xz@VinWh(4UZdcYf(oKyHRR6}X(}5l zATubf&QJk+bixifC5Y<0o}D;(VXh)}0){(O zSOCRcaPO&z^<|H`9DY+8GBKRX<11nMsou53Fi|^T*$fWmYO@1e*AHf@v~GDgB2%z2 zP+oeBFUEB_BmonzM06599PTs1lY^n#ZzL!?mjXqC*NbIfF>T%<4_FFqIQ7ScFxytv z`9~*_sOXT{Wn4&;IDxR(P%k~S2sYvDKj`fcwn)|R$AuvBfXz9eh)sA#C)%RDml9f1 z!Kj#g7A!L~G6^TAfk^xWVz_FpoPX4NJAM@LjG8KOslF@VNVL>#i&VkjtSJo0Arzhy z=0&s7`1&4?ndCbGhQLIkB`;z%Mq<1=p&+#?VCb^%OJl8Zy25XicOVYQ0B&U$+i`g~ zzqA4;WhZ*l0*sIwm*wdXsl(ow(rlh2VCrDU>7>4&8f*snM&^tHbQ7?~CW#{^ks}{q zhsawnsQ}g&Wr;&^kwvd+=$a4Ob_lSZa*1*U4oAMX0gj;XxN(3X&KmQ!m9M6oQs1w1 zfXrrq^(pH-CPrYUw{iZarPl&^70U~z<^IxHdbWA z6&Elk#W%{95S%nj4pJK73Z|A)GB)7TWWc7q81?cz@8wZt>SwE}mFw)`T)>HgpcYr_ zb(k6c{V2b8)}A`T=5{<>I%zt&zH?VqOC}>VG&iFP1>V)Om=B;CA z!1g=G!gE@VVor1JvZqSmIkHqLYyq1kTKuxXz2^$doD9tF0+1eY3%j@DfSL1_Y9|^1 zoiQ>cB-3+?-2rTxwTnz5lZM?}_+I>fYWY`y0RZa_tj-Wm3MT*n002ovPDHLkV1g~J B^aB6@ diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceStrawberry.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60SauceStrawberry.png deleted file mode 100644 index 9d868eeeb0ae10f2bdc24281c9bbef014a4f2071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 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ⅇ`=}j_ zVuuEvsVM{+`2z5wc9?li5mjX~9O0Au_7rNO?MefQhH&voMHoN!WH*|X?+IOr+JJE9 zMF8^s7K9v{RtP+Dr%X47QgOJYDScMR-F>!XTBa=#UY#8!j zx3q^N;a?2MEj)tyT)I}}{W%31=&7VyMY0hcD>&RUcl1)zj(F6Ev)atx_QNP;;SP$% ztB)$M_>&cxe;dIa>($L*>L|sF^(t~qj#w*kup4EM^Q3)m{WfGui+B<#CqZ24owYR| z6q%QsnAxX5k;ay9_67?dUa;YaXuxKVW?sDuF2|qID(RzjncG}l({2)vepiugmp*-q zQ>aHha-xTz8QY%x4Sov5X$yXP*BM{_IA3 zM@n*LDeC4jiOt`1H1KfG_-j5s$iq-C)1+ntGcwF8<8aWtZn~#?;Gk}?zcj(8q|F~X z;*tYbZLIOXB137fJzblkX^(dq^PWNTsy>z^5#|NVP^pBr@gwYk6olkRW9zq?gEO%W z+drAW{_i9lF@WVq^k0rhPhl*{?ZY_i`o91J07cjAeL?*V761SM07*qoM6N<$g5rR5 AW&i*H diff --git a/templates/Pages/MasterDetail/MasterDetailPage/Images/60Strawberry.png b/templates/Pages/MasterDetail/MasterDetailPage/Images/60Strawberry.png deleted file mode 100644 index 17dfa8918c2d1333d5671d4c77734b53540ed94c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2394 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 UrBEXDIsgCw07*qoM6N<$g2@s`$p8QV diff --git a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml index a2c7edec6..1b21f9739 100644 --- a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml +++ b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml @@ -6,6 +6,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:i="using:Microsoft.Xaml.Interactivity" + Loaded="OnLoaded" mc:Ignorable="d"> @@ -16,98 +17,69 @@ 0,8,0,0 0,4,0,0 - 12 - 12,-9,0,0 - - + 8 - - + + - + - - - + + + - + - + - - - + + + - - - - - - - + - - + + - + - + - + - - - - - - - - - - - + + + + - - - - - - - - - - - - - - + + + + + diff --git a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml.cs b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml.cs index 76e7ccff3..dcc1c5865 100644 --- a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml.cs +++ b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPagePage.xaml.cs @@ -1,3 +1,4 @@ +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace ItemNamespace.MasterDetailPage @@ -8,5 +9,15 @@ namespace ItemNamespace.MasterDetailPage { this.InitializeComponent(); } + + private void OnWindowStateChanged(object sender, VisualStateChangedEventArgs e) + { + ViewModel.UpdateWindowState(e); + } + + private async void OnLoaded(object sender, RoutedEventArgs e) + { + await ViewModel.LoadDataAsync(visualStateGroup.CurrentState); + } } } diff --git a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPageViewModel.cs b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPageViewModel.cs index 861d4917b..939a4ec04 100644 --- a/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPageViewModel.cs +++ b/templates/Pages/MasterDetail/MasterDetailPage/MasterDetailPageViewModel.cs @@ -11,9 +11,10 @@ namespace ItemNamespace.MasterDetailPage { public class MasterDetailPageViewModel : System.ComponentModel.INotifyPropertyChanged { - const double UseNavigationWithRequested = 900; + const string NarrowStateName = "NarrowState"; + const string DefaultStateName = "DefaultState"; - private bool _useNavigation; + private VisualState _currentState; private Visibility _masterVisibility; public Visibility MasterVisibility @@ -29,68 +30,58 @@ namespace ItemNamespace.MasterDetailPage set { Set(ref _detailVisibility, value); } } - private DessertModel _selected; - public DessertModel Selected + private SampleModel _selected; + public SampleModel Selected { get { return _selected; } set { Set(ref _selected, value); } } - - public ICommand LoadDataCommand { get; private set; } + public ICommand ItemClickCommand { get; private set; } - public ObservableCollection DessertList { get; private set; } = new ObservableCollection(); + public ObservableCollection SampleItems { get; private set; } = new ObservableCollection(); public MasterDetailPageViewModel() { - this._useNavigation = Window.Current.Bounds.Width < UseNavigationWithRequested; - LoadDataCommand = new RelayCommand(async () => { await LoadDataAsync(); }); ItemClickCommand = new RelayCommand(OnItemClick); - Window.Current.SizeChanged += OnWindowSizeChanged; SetGoBack(); - } + } - private void OnWindowSizeChanged(object sender, WindowSizeChangedEventArgs e) + public async Task LoadDataAsync(VisualState currentState) { - var newWidth = e.Size.Width; - if (!this._useNavigation && newWidth < UseNavigationWithRequested) - { - //Enter on navigation master detail - this.MasterVisibility = Visibility.Visible; - this.DetailVisibility = Visibility.Collapsed; - SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; - } - else if (this._useNavigation && newWidth >= UseNavigationWithRequested) - { - //Enter on full screen master detail - this.MasterVisibility = Visibility.Visible; - this.DetailVisibility = Visibility.Visible; - SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; - } - this._useNavigation = newWidth < UseNavigationWithRequested; - } + _currentState = currentState; + SampleItems.Clear(); - private async Task LoadDataAsync() - { - this.DessertList.Clear(); - - var service = new DessertService(); + var service = new SampleModelService(); var data = await service.GetDataAsync(); foreach (var item in data) { - this.DessertList.Add(item); + SampleItems.Add(item); } - if (Window.Current.Bounds.Width >= UseNavigationWithRequested) + Selected = SampleItems.First(); + NavigateToDetail(); + } + + public void UpdateWindowState(VisualStateChangedEventArgs args) + { + _currentState = args.NewState; + if (args.OldState.Name == NarrowStateName && args.NewState.Name == DefaultStateName) { - Selected = DessertList.First(); - NavigateToDetail(); + MasterVisibility = Visibility.Visible; + DetailVisibility = Visibility.Visible; } + else + { + MasterVisibility = Visibility.Visible; + DetailVisibility = Visibility.Collapsed; + } + SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; } private void OnItemClick(ItemClickEventArgs args) { - DessertModel item = args?.ClickedItem as DessertModel; + SampleModel item = args?.ClickedItem as SampleModel; if (item != null) { Selected = item; @@ -100,10 +91,10 @@ namespace ItemNamespace.MasterDetailPage private void NavigateToDetail() { - this.DetailVisibility = Visibility.Visible; - if (this._useNavigation) + DetailVisibility = Visibility.Visible; + if (_currentState.Name == NarrowStateName) { - this.MasterVisibility = Visibility.Collapsed; + MasterVisibility = Visibility.Collapsed; SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; } } @@ -116,8 +107,8 @@ namespace ItemNamespace.MasterDetailPage { if (DetailVisibility == Visibility.Visible) { - this.MasterVisibility = Visibility.Visible; - this.DetailVisibility = Visibility.Collapsed; + MasterVisibility = Visibility.Visible; + DetailVisibility = Visibility.Collapsed; SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; e.Handled = true; } diff --git a/templates/Pages/MasterDetail/MasterDetailPage/DessertModel.cs b/templates/Pages/MasterDetail/MasterDetailPage/SampleModel.cs similarity index 78% rename from templates/Pages/MasterDetail/MasterDetailPage/DessertModel.cs rename to templates/Pages/MasterDetail/MasterDetailPage/SampleModel.cs index 07d22914f..7499d39f4 100644 --- a/templates/Pages/MasterDetail/MasterDetailPage/DessertModel.cs +++ b/templates/Pages/MasterDetail/MasterDetailPage/SampleModel.cs @@ -1,10 +1,9 @@ namespace ItemNamespace.MasterDetailPage { - public class DessertModel + public class SampleModel { public string Title { get; set; } public string Category { get; set; } - public string Picture { get; set; } public string Subtitle { get; set; } public string Link { get; set; } public string Description { get; set; } diff --git a/templates/Pages/MasterDetail/MasterDetailPage/SampleModelService.cs b/templates/Pages/MasterDetail/MasterDetailPage/SampleModelService.cs new file mode 100644 index 000000000..0f723f48b --- /dev/null +++ b/templates/Pages/MasterDetail/MasterDetailPage/SampleModelService.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace ItemNamespace.MasterDetailPage +{ + public class SampleModelService + { + public async Task> GetDataAsync() + { + await Task.Delay(0); + + var data = new List(); + + data.Add(new SampleModel + { + Title = "Lorem ipsum dolor sit amet", + Subtitle = "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", + Link = "http://www.adatum.com/", + Category = "Consectetur Adipiscing", + Description = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus", + }); + + data.Add(new SampleModel + { + Title = "Sed ut perspiciatis unde", + Subtitle = "Sit voluptatem accusantium doloremque laudantium, totam rem aperiam", + Link = "http://www.adventure-works.com/", + Category = "Iste Natus", + Description = "Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?. omnis voluptas assumenda est, omnis dolor repellendus", + + }); + return data; + } + } +} From f4b0c797e3dec1a79d8570a4224a5c204a7a93a9 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Tue, 21 Mar 2017 12:35:43 +0100 Subject: [PATCH 02/20] Format page.xaml.cs --- .../Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs index 50f1ac957..7f3cf1edf 100644 --- a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs +++ b/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs @@ -1,4 +1,10 @@ public sealed partial class uct.ItemNamePage : Page { - private uct.ItemNameViewModel ViewModel { get { return DataContext as uct.ItemNameViewModel; } } + //{[{ + private uct.ItemNameViewModel ViewModel + { + get { return DataContext as uct.ItemNameViewModel; } + } + + //}]} } From 4d0d12a1ed6d6d66762b887568c8cbd4401e5ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 14:49:24 +0100 Subject: [PATCH 03/20] Fix get current content source when no several old versions exists --- code/src/Core/CodeGen.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/src/Core/CodeGen.cs b/code/src/Core/CodeGen.cs index f1fcf76a6..a648f16be 100644 --- a/code/src/Core/CodeGen.cs +++ b/code/src/Core/CodeGen.cs @@ -44,15 +44,20 @@ namespace Microsoft.Templates.Core string result = String.Empty; foreach(var mp in Instance?.Settings.SettingsLoader.MountPoints) { - if (Directory.Exists(mp.Place)) + if (Directory.Exists(mp.Place) && IsHigherVersion(result, mp.Place)) { - //TODO RAGC: ENSURE EXITSI AND THE VERSION IS HIGHER!!!! result = mp.Place; } } return result; } + private bool IsHigherVersion(string currentPlace, string newPlace) + { + Version.TryParse(currentPlace, out Version current); + Version.TryParse(Path.GetFileName(newPlace), out Version newp); + return newp > current; + } private void Init() { From cdf2e06598e94e0e8baf672040f322339bb5840b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 15:01:32 +0100 Subject: [PATCH 04/20] Add Strong Versioning --- _build/Extension-SetIdentityAndVersion.ps1 | 38 +++++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/_build/Extension-SetIdentityAndVersion.ps1 b/_build/Extension-SetIdentityAndVersion.ps1 index a101961a3..e478ad8ad 100644 --- a/_build/Extension-SetIdentityAndVersion.ps1 +++ b/_build/Extension-SetIdentityAndVersion.ps1 @@ -10,7 +10,10 @@ Param( [string]$vsixDisplayName, [Parameter(Mandatory=$True,Position=4)] - [string]$buildNumber + [string]$buildNumber, + + [Parameter(Mandatory=$False,Position=3)] + [string]$publicKeyToken = "e4ef4cc7a47ae0c5" #TestKey.snk ) $VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)" @@ -44,24 +47,49 @@ else{ throw "Identity is mandatory." } -## APPLY VERSION TO ASSEMBLY FILES +## APPLY VERSION TO ASSEMBLY FILES (AssemblyVersion and AssemblyFileVersion) Write-Host "Applying version to AssemblyInfo Files in matching the path pattern '$codePathPattern'" $files = Get-ChildItem -include "*AssemblyInfo.cs" -Recurse | Where-Object{ $_.FullName -notmatch "\\Templates\\" } if($files) { Write-Host "Will apply $versionNumber to $($files.count) files." - $assemblyFileVersionRegEx = "AssemblyFileVersion\(""(\d+)\.(\d+)\.(\d+)\.(\d+)""\)" - $assemblyFileVersionReplacement = "AssemblyFileVersion(""$versionNumber"")" + $assemblyVersionRegEx = "\(""$VersionRegex""\)" + $assemblyVersionReplacement = "(""$versionNumber"")" foreach ($file in $files) { $filecontent = Get-Content($file) attrib $file -r - $filecontent -replace $assemblyFileVersionRegEx, $assemblyFileVersionReplacement | Out-File $file utf8 + $filecontent -replace $assemblyVersionRegEx, $assemblyVersionReplacement | Out-File $file utf8 Write-Host "$file - version applied" } } else { Write-Warning "No files found to apply version." +} + +## APPLY VERSION TO PROJECT TEMPLATE WIZARD REFERENCE +if($publicKeyToken){ + Write-Host "Setting Wizard Extension configuration in Project Template" + $projectTemplate = Get-ChildItem -include "*.vstemplate" -recurse | Where-Object{ $_.FullName -notmatch "\\Templates\\" -and $_.FullName -match "\\ProjectTemplates\\"} + if($projectTemplate){ + [xml]$projectTemplateContent = Get-Content $projectTemplate + + $newPublicKeyToken = "PublicKeyToken=$publicKeyToken" + $wizardAssemblyStrongName = $projectTemplateContent.VSTemplate.WizardExtension.Assembly -replace $VersionRegEx, $versionNumber + $wizardAssemblyStrongName = $wizardExtensioAssembly -replace "PublicKeyToken=.*", "$newPublicKeyToken" + + $projectTemplateContent.VSTemplate.WizardExtension.Assembly = $wizardAssemblyStrongName + + $projectTemplateContent.Save($projectTemplate) + + Write-Host "$projectTemplate - Wizard Assembly Strong Name updated ($wizardAssemblyStrongName)" + } + else{ + throw "No Project Template manifest file found!" + } +} +else{ + throw "Public key token not set." } \ No newline at end of file From e5fc9e4fa46301708fffa42dc41b5fb1f2fe64fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 15:25:08 +0100 Subject: [PATCH 05/20] Avoid version number coliding --- _build/Extension-SetIdentityAndVersion.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_build/Extension-SetIdentityAndVersion.ps1 b/_build/Extension-SetIdentityAndVersion.ps1 index e478ad8ad..7d67bbf4e 100644 --- a/_build/Extension-SetIdentityAndVersion.ps1 +++ b/_build/Extension-SetIdentityAndVersion.ps1 @@ -19,8 +19,9 @@ Param( $VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)" if($buildNumber -match $VersionRegEx){ + $buildDifferentiator =([DateTime]::Now.Year - 2000) * 1000 + [DateTime]::Now.DayOfYear - $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + [int]::Parse($matches[3]).ToString() + "." + [int]::Parse($matches[4]).ToString() + $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + $buildDifferentiator.ToString() + "." + [int]::Parse($matches[4]).ToString() Write-Host "Version Number" $versionNumber } From 49e1872d218ae53281c6f2dd9cdf6ce9d2400435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 15:40:57 +0100 Subject: [PATCH 06/20] Take build date from buildNumber --- _build/Extension-SetIdentityAndVersion.ps1 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_build/Extension-SetIdentityAndVersion.ps1 b/_build/Extension-SetIdentityAndVersion.ps1 index 7d67bbf4e..9f47a5559 100644 --- a/_build/Extension-SetIdentityAndVersion.ps1 +++ b/_build/Extension-SetIdentityAndVersion.ps1 @@ -19,7 +19,16 @@ Param( $VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)" if($buildNumber -match $VersionRegEx){ - $buildDifferentiator =([DateTime]::Now.Year - 2000) * 1000 + [DateTime]::Now.DayOfYear + $dateFromBuildNumber = [DateTime]::Now; + + [DateTime]::TryParseExact($matches[2],"yyyyMMdd", + [System.Globalization.CultureInfo]::InvariantCulture, + [System.Globalization.DateTimeStyles]::None, + [ref]$dateFromBuildNumber) + + Write-Output "Parsed Date From Build: $dateFromBuildNumber" + + $buildDifferentiator =($dateFromBuildNumber.Year - 2000) * 1000 + $dateFromBuildNumber.DayOfYear $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + $buildDifferentiator.ToString() + "." + [int]::Parse($matches[4]).ToString() Write-Host "Version Number" $versionNumber From 534cff2c5f3a5897748892fa7d75697f8b1fdc5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 15:46:12 +0100 Subject: [PATCH 07/20] Fix get build part from buildNumber --- _build/Extension-SetIdentityAndVersion.ps1 | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/_build/Extension-SetIdentityAndVersion.ps1 b/_build/Extension-SetIdentityAndVersion.ps1 index 9f47a5559..affec2267 100644 --- a/_build/Extension-SetIdentityAndVersion.ps1 +++ b/_build/Extension-SetIdentityAndVersion.ps1 @@ -20,8 +20,7 @@ $VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)" if($buildNumber -match $VersionRegEx){ $dateFromBuildNumber = [DateTime]::Now; - - [DateTime]::TryParseExact($matches[2],"yyyyMMdd", + [DateTime]::TryParseExact($matches[3],"yyyyMMdd", [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$dateFromBuildNumber) @@ -82,13 +81,20 @@ else ## APPLY VERSION TO PROJECT TEMPLATE WIZARD REFERENCE if($publicKeyToken){ Write-Host "Setting Wizard Extension configuration in Project Template" - $projectTemplate = Get-ChildItem -include "*.vstemplate" -recurse | Where-Object{ $_.FullName -notmatch "\\Templates\\" -and $_.FullName -match "\\ProjectTemplates\\"} + $projectTemplate = Get-ChildItem -include "*.vstemplate" -recurse | Where-Object{ + $_.FullName -notmatch "\\Templates\\" -and + $_.FullName -notmatch "\\debug\\" -and + $_.FullName -notmatch "\\obj\\" -and + $_.FullName -match "\\ProjectTemplates\\" + } if($projectTemplate){ + + [xml]$projectTemplateContent = Get-Content $projectTemplate $newPublicKeyToken = "PublicKeyToken=$publicKeyToken" $wizardAssemblyStrongName = $projectTemplateContent.VSTemplate.WizardExtension.Assembly -replace $VersionRegEx, $versionNumber - $wizardAssemblyStrongName = $wizardExtensioAssembly -replace "PublicKeyToken=.*", "$newPublicKeyToken" + $wizardAssemblyStrongName = $wizardAssemblyStrongName -replace "PublicKeyToken=.*", "$newPublicKeyToken" $projectTemplateContent.VSTemplate.WizardExtension.Assembly = $wizardAssemblyStrongName From b33e0aba6a83b6d02d41196536e463f85c0788ad Mon Sep 17 00:00:00 2001 From: javitosanchez Date: Tue, 21 Mar 2017 16:00:31 +0100 Subject: [PATCH 08/20] Validate reserved names --- code/src/Core/Naming.cs | 14 ++++++++++++-- .../Steps/ConsumerFeatures/Strings.Designer.cs | 9 +++++++++ .../src/Wizard/Steps/ConsumerFeatures/Strings.resx | 3 +++ .../Wizard/Steps/DevFeatures/Strings.Designer.cs | 9 +++++++++ code/src/Wizard/Steps/DevFeatures/Strings.resx | 3 +++ code/src/Wizard/Steps/Pages/Strings.Designer.cs | 9 +++++++++ code/src/Wizard/Steps/Pages/Strings.resx | 3 +++ 7 files changed, 48 insertions(+), 2 deletions(-) diff --git a/code/src/Core/Naming.cs b/code/src/Core/Naming.cs index 9975b6d01..ca05502e3 100644 --- a/code/src/Core/Naming.cs +++ b/code/src/Core/Naming.cs @@ -9,7 +9,7 @@ namespace Microsoft.Templates.Core { public class Naming { - private static readonly string[] ReservedNames = new string[] { "WebView", "Page", "BackgroundTask", "PivotPage" }; + private static readonly string[] ReservedNames = new string[] { "WebView", "Page", "BackgroundTask", "Pivot" }; private const string ValidationPattern = @"^([a-zA-Z])([\w\-])*$"; private const string InferInvalidPattern = @"[^a-zA-Z\d_\-]"; @@ -54,6 +54,15 @@ namespace Microsoft.Templates.Core ErrorType = ValidationErrorType.AlreadyExists }; } + if (ReservedNames.Contains(value)) + { + return new ValidationResult + { + IsValid = false, + ErrorType = ValidationErrorType.ReservedName + }; + } + var m = Regex.Match(value, ValidationPattern); if (!m.Success) { @@ -88,6 +97,7 @@ namespace Microsoft.Templates.Core None, Empty, AlreadyExists, - BadFormat + BadFormat, + ReservedName } } diff --git a/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs b/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs index 11a7d6a3b..fb32f475a 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs +++ b/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs @@ -158,5 +158,14 @@ namespace Microsoft.Templates.Wizard.Steps.ConsumerFeatures { return ResourceManager.GetString("ValidationError_Empty", resourceCulture); } } + + /// + /// Looks up a localized string similar to Name is reserved. + /// + public static string ValidationError_ReservedName { + get { + return ResourceManager.GetString("ValidationError_ReservedName", resourceCulture); + } + } } } diff --git a/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx b/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx index 221e04e00..322301d03 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx +++ b/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx @@ -150,4 +150,7 @@ Name cannot be empty + + Name is reserved + \ No newline at end of file diff --git a/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs b/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs index f9e378059..90283b07e 100644 --- a/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs +++ b/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs @@ -158,5 +158,14 @@ namespace Microsoft.Templates.Wizard.Steps.DevFeatures { return ResourceManager.GetString("ValidationError_Empty", resourceCulture); } } + + /// + /// Looks up a localized string similar to Name is reserved. + /// + public static string ValidationError_ReservedName { + get { + return ResourceManager.GetString("ValidationError_ReservedName", resourceCulture); + } + } } } diff --git a/code/src/Wizard/Steps/DevFeatures/Strings.resx b/code/src/Wizard/Steps/DevFeatures/Strings.resx index e13ac9492..cf0af7e91 100644 --- a/code/src/Wizard/Steps/DevFeatures/Strings.resx +++ b/code/src/Wizard/Steps/DevFeatures/Strings.resx @@ -150,4 +150,7 @@ Name cannot be empty + + Name is reserved + \ No newline at end of file diff --git a/code/src/Wizard/Steps/Pages/Strings.Designer.cs b/code/src/Wizard/Steps/Pages/Strings.Designer.cs index 47d9674a1..93808e4b1 100644 --- a/code/src/Wizard/Steps/Pages/Strings.Designer.cs +++ b/code/src/Wizard/Steps/Pages/Strings.Designer.cs @@ -149,5 +149,14 @@ namespace Microsoft.Templates.Wizard.Steps.Pages { return ResourceManager.GetString("ValidationError_Empty", resourceCulture); } } + + /// + /// Looks up a localized string similar to Name is reserved. + /// + public static string ValidationError_ReservedName { + get { + return ResourceManager.GetString("ValidationError_ReservedName", resourceCulture); + } + } } } diff --git a/code/src/Wizard/Steps/Pages/Strings.resx b/code/src/Wizard/Steps/Pages/Strings.resx index 6c4ea2bd2..d728a7a71 100644 --- a/code/src/Wizard/Steps/Pages/Strings.resx +++ b/code/src/Wizard/Steps/Pages/Strings.resx @@ -147,4 +147,7 @@ Name cannot be empty + + Name is reserved + \ No newline at end of file From 602c0e509349b5f5832991885d1f59e8d3bbfd80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 16:18:16 +0100 Subject: [PATCH 09/20] Fix IsHigherVersion --- code/src/Core/CodeGen.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/src/Core/CodeGen.cs b/code/src/Core/CodeGen.cs index a648f16be..77aab0ba1 100644 --- a/code/src/Core/CodeGen.cs +++ b/code/src/Core/CodeGen.cs @@ -56,6 +56,17 @@ namespace Microsoft.Templates.Core { Version.TryParse(currentPlace, out Version current); Version.TryParse(Path.GetFileName(newPlace), out Version newp); + + if(newp == null) + { + return false; + } + + if (newp != null && current == null) + { + return true; + } + return newp > current; } From 2636e00095af4341e997dee0150b3e5b984d4cdd Mon Sep 17 00:00:00 2001 From: javitosanchez Date: Tue, 21 Mar 2017 16:37:10 +0100 Subject: [PATCH 10/20] Throw exception when a not multiple instance template has been renamed --- .../NewConsumerFeatureViewModel.cs | 17 ++++++++++++++--- .../ConsumerFeatures/Strings.Designer.cs | 9 +++++++++ .../Steps/ConsumerFeatures/Strings.resx | 3 +++ .../NewDevFeature/NewDevFeatureViewModel.cs | 17 ++++++++++++++--- .../Steps/DevFeatures/Strings.Designer.cs | 9 +++++++++ .../src/Wizard/Steps/DevFeatures/Strings.resx | 3 +++ .../Steps/Pages/NewPage/NewPageViewModel.cs | 19 +++++++++++++++---- .../Wizard/Steps/Pages/Strings.Designer.cs | 9 +++++++++ code/src/Wizard/Steps/Pages/Strings.resx | 3 +++ 9 files changed, 79 insertions(+), 10 deletions(-) diff --git a/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs b/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs index 6e1fa6c9c..a6000d793 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs +++ b/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs @@ -58,9 +58,7 @@ namespace Microsoft.Templates.Wizard.Steps.ConsumerFeatures.NewConsumerFeature { SetProperty(ref _itemName, value); - var validationResult = Naming.Validate(_selectedNames, value); - - HandleValidation(validationResult); + Validate(value); OnPropertyChanged(nameof(OkCommand)); } @@ -126,6 +124,19 @@ namespace Microsoft.Templates.Wizard.Steps.ConsumerFeatures.NewConsumerFeature } } + private void Validate(string value) + { + //TODO: CREATE VALIDATION ERROR CLASS + if (!TemplateSelected.MultipleInstances) + { + throw new Exception(Strings.ValidationError_RenameNotAllowed); + } + + var validationResult = Naming.Validate(_selectedNames, value); + + HandleValidation(validationResult); + } + private bool IsValid() => _isValid; } } diff --git a/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs b/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs index fb32f475a..4345e0cc5 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs +++ b/code/src/Wizard/Steps/ConsumerFeatures/Strings.Designer.cs @@ -159,6 +159,15 @@ namespace Microsoft.Templates.Wizard.Steps.ConsumerFeatures { } } + /// + /// Looks up a localized string similar to Cannot set a custom name. + /// + public static string ValidationError_RenameNotAllowed { + get { + return ResourceManager.GetString("ValidationError_RenameNotAllowed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Name is reserved. /// diff --git a/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx b/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx index 322301d03..00a799837 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx +++ b/code/src/Wizard/Steps/ConsumerFeatures/Strings.resx @@ -150,6 +150,9 @@ Name cannot be empty + + Cannot set a custom name + Name is reserved diff --git a/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs b/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs index 6388c92cd..86a177d2d 100644 --- a/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs +++ b/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs @@ -58,9 +58,7 @@ namespace Microsoft.Templates.Wizard.Steps.DevFeatures.NewDevFeature { SetProperty(ref _itemName, value); - var validationResult = Naming.Validate(_selectedNames, value); - - HandleValidation(validationResult); + Validate(value); OnPropertyChanged(nameof(OkCommand)); } @@ -125,6 +123,19 @@ namespace Microsoft.Templates.Wizard.Steps.DevFeatures.NewDevFeature } } + private void Validate(string value) + { + //TODO: CREATE VALIDATION ERROR CLASS + if (!TemplateSelected.MultipleInstances) + { + throw new Exception(Strings.ValidationError_RenameNotAllowed); + } + + var validationResult = Naming.Validate(_selectedNames, value); + + HandleValidation(validationResult); + } + private bool IsValid() => _isValid; } } diff --git a/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs b/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs index 90283b07e..e7de5c4f5 100644 --- a/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs +++ b/code/src/Wizard/Steps/DevFeatures/Strings.Designer.cs @@ -159,6 +159,15 @@ namespace Microsoft.Templates.Wizard.Steps.DevFeatures { } } + /// + /// Looks up a localized string similar to Cannot set a custom name. + /// + public static string ValidationError_RenameNotAllowed { + get { + return ResourceManager.GetString("ValidationError_RenameNotAllowed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Name is reserved. /// diff --git a/code/src/Wizard/Steps/DevFeatures/Strings.resx b/code/src/Wizard/Steps/DevFeatures/Strings.resx index cf0af7e91..f8cf88d45 100644 --- a/code/src/Wizard/Steps/DevFeatures/Strings.resx +++ b/code/src/Wizard/Steps/DevFeatures/Strings.resx @@ -150,6 +150,9 @@ Name cannot be empty + + Cannot set a custom name + Name is reserved diff --git a/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs b/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs index fe572a95a..5a200ac90 100644 --- a/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs +++ b/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs @@ -56,15 +56,13 @@ namespace Microsoft.Templates.Wizard.Steps.Pages.NewPage { SetProperty(ref _itemName, value); - var validationResult = Naming.Validate(_selectedNames, value); - - HandleValidation(validationResult); + Validate(value); OnPropertyChanged(nameof(OkCommand)); } } - //TODO: MAKE THIS METHOD TRULY ASYNC + //TODO: MAKE THIS METHOD TRULY ASYNC public async Task InitializeAsync() { Templates.Clear(); @@ -114,6 +112,19 @@ namespace Microsoft.Templates.Wizard.Steps.Pages.NewPage } } + private void Validate(string value) + { + //TODO: CREATE VALIDATION ERROR CLASS + if (!TemplateSelected.MultipleInstances) + { + throw new Exception(Strings.ValidationError_RenameNotAllowed); + } + + var validationResult = Naming.Validate(_selectedNames, value); + + HandleValidation(validationResult); + } + private bool IsValid() => _isValid; } } diff --git a/code/src/Wizard/Steps/Pages/Strings.Designer.cs b/code/src/Wizard/Steps/Pages/Strings.Designer.cs index 93808e4b1..e9b27287c 100644 --- a/code/src/Wizard/Steps/Pages/Strings.Designer.cs +++ b/code/src/Wizard/Steps/Pages/Strings.Designer.cs @@ -150,6 +150,15 @@ namespace Microsoft.Templates.Wizard.Steps.Pages { } } + /// + /// Looks up a localized string similar to Cannot set a custom name. + /// + public static string ValidationError_RenameNotAllowed { + get { + return ResourceManager.GetString("ValidationError_RenameNotAllowed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Name is reserved. /// diff --git a/code/src/Wizard/Steps/Pages/Strings.resx b/code/src/Wizard/Steps/Pages/Strings.resx index d728a7a71..bb79545e4 100644 --- a/code/src/Wizard/Steps/Pages/Strings.resx +++ b/code/src/Wizard/Steps/Pages/Strings.resx @@ -147,6 +147,9 @@ Name cannot be empty + + Cannot set a custom name + Name is reserved From 08fcc9d3669b529e9079b24400067f5651e0ff36 Mon Sep 17 00:00:00 2001 From: javitosanchez Date: Tue, 21 Mar 2017 16:42:03 +0100 Subject: [PATCH 11/20] Validation method --- .../NewConsumerFeature/NewConsumerFeatureViewModel.cs | 6 ------ .../DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs | 6 ------ code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs | 6 ------ 3 files changed, 18 deletions(-) diff --git a/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs b/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs index a6000d793..9dd12b53c 100644 --- a/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs +++ b/code/src/Wizard/Steps/ConsumerFeatures/NewConsumerFeature/NewConsumerFeatureViewModel.cs @@ -126,12 +126,6 @@ namespace Microsoft.Templates.Wizard.Steps.ConsumerFeatures.NewConsumerFeature private void Validate(string value) { - //TODO: CREATE VALIDATION ERROR CLASS - if (!TemplateSelected.MultipleInstances) - { - throw new Exception(Strings.ValidationError_RenameNotAllowed); - } - var validationResult = Naming.Validate(_selectedNames, value); HandleValidation(validationResult); diff --git a/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs b/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs index 86a177d2d..cfad43012 100644 --- a/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs +++ b/code/src/Wizard/Steps/DevFeatures/NewDevFeature/NewDevFeatureViewModel.cs @@ -125,12 +125,6 @@ namespace Microsoft.Templates.Wizard.Steps.DevFeatures.NewDevFeature private void Validate(string value) { - //TODO: CREATE VALIDATION ERROR CLASS - if (!TemplateSelected.MultipleInstances) - { - throw new Exception(Strings.ValidationError_RenameNotAllowed); - } - var validationResult = Naming.Validate(_selectedNames, value); HandleValidation(validationResult); diff --git a/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs b/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs index 5a200ac90..adc4dbe85 100644 --- a/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs +++ b/code/src/Wizard/Steps/Pages/NewPage/NewPageViewModel.cs @@ -114,12 +114,6 @@ namespace Microsoft.Templates.Wizard.Steps.Pages.NewPage private void Validate(string value) { - //TODO: CREATE VALIDATION ERROR CLASS - if (!TemplateSelected.MultipleInstances) - { - throw new Exception(Strings.ValidationError_RenameNotAllowed); - } - var validationResult = Naming.Validate(_selectedNames, value); HandleValidation(validationResult); From b9202647cef9167959ac9243cbc2afbfd86c8201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Tue, 21 Mar 2017 16:56:39 +0100 Subject: [PATCH 12/20] Add differentiation to revision when build dev version --- _build/Extension-SetIdentityAndVersion.ps1 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/_build/Extension-SetIdentityAndVersion.ps1 b/_build/Extension-SetIdentityAndVersion.ps1 index affec2267..521130c77 100644 --- a/_build/Extension-SetIdentityAndVersion.ps1 +++ b/_build/Extension-SetIdentityAndVersion.ps1 @@ -19,17 +19,16 @@ Param( $VersionRegex = "(\d+)\.(\d+)\.(\d+)\.(\d+)" if($buildNumber -match $VersionRegEx){ - $dateFromBuildNumber = [DateTime]::Now; - [DateTime]::TryParseExact($matches[3],"yyyyMMdd", - [System.Globalization.CultureInfo]::InvariantCulture, - [System.Globalization.DateTimeStyles]::None, - [ref]$dateFromBuildNumber) Write-Output "Parsed Date From Build: $dateFromBuildNumber" - $buildDifferentiator =($dateFromBuildNumber.Year - 2000) * 1000 + $dateFromBuildNumber.DayOfYear + $revision = [int]::Parse($matches[4]).ToString() - $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + $buildDifferentiator.ToString() + "." + [int]::Parse($matches[4]).ToString() + if($buildNumber.ToLower().StartsWith("dev")){ + $revision = (65000 + [int]::Parse($matches[4])).ToString(); + } + + $versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + [int]::Parse($matches[3]).ToString() + "." + $revision Write-Host "Version Number" $versionNumber } From fac039c9ca8a7818f5e62dbf557d957aa80ab2dd Mon Sep 17 00:00:00 2001 From: javitosanchez Date: Tue, 21 Mar 2017 18:16:59 +0100 Subject: [PATCH 13/20] Add template version to exception tracking message --- code/src/Wizard/GenController.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/code/src/Wizard/GenController.cs b/code/src/Wizard/GenController.cs index 45e2f8843..290bb9f54 100644 --- a/code/src/Wizard/GenController.cs +++ b/code/src/Wizard/GenController.cs @@ -68,9 +68,9 @@ namespace Microsoft.Templates.Wizard { var genItems = GenComposer.Compose(userSelection).ToList(); - Stopwatch chrono = Stopwatch.StartNew(); + var chrono = Stopwatch.StartNew(); - Dictionary genResults = new Dictionary(); + var genResults = new Dictionary(); foreach (var genInfo in genItems) { @@ -155,12 +155,23 @@ namespace Microsoft.Templates.Wizard private static void ShowError(Exception ex, WizardState userSelection = null) { AppHealth.Current.Error.TrackAsync(ex.ToString()).FireAndForget(); - AppHealth.Current.Exception.TrackAsync(ex, userSelection?.ToString()).FireAndForget(); + AppHealth.Current.Exception.TrackAsync(ex, GetExceptionTrackMessage(userSelection)).FireAndForget(); var error = new ErrorDialog(ex); GenContext.ToolBox.Shell.ShowModal(error); } + private static string GetExceptionTrackMessage(WizardState userSelection = null) + { + var sb = new StringBuilder(); + sb.AppendLine($"Templates v: '{GenContext.ToolBox.Repo.GetVersion()}'"); + if (userSelection != null) + { + sb.AppendLine(userSelection.ToString()); + } + return sb.ToString(); + } + private static void CleanStatusBar() { GenContext.ToolBox.Shell.ShowStatusBarMessage(string.Empty); @@ -190,7 +201,7 @@ namespace Microsoft.Templates.Wizard } } } - catch (System.Exception ex) + catch (Exception ex) { AppHealth.Current.Exception.TrackAsync(ex, "Exception tracking telemetry for Template Generation.").FireAndForget(); } From 40d502110a8a3825f176108bf466d8ecb550a57b Mon Sep 17 00:00:00 2001 From: javitosanchez Date: Tue, 21 Mar 2017 18:44:17 +0100 Subject: [PATCH 14/20] Move activationService to Services --- code/src/Core/Configuration/Configuration.cs | 2 +- templates/Projects/Blank/Blank/App.xaml.cs | 3 +-- .../Blank/Blank/{Activation => Services}/ActivationService.cs | 4 +++- templates/Projects/Blank/Blank/uct.BlankProject.csproj | 2 +- templates/Projects/SplitView/SplitView/App.xaml.cs | 2 +- .../SplitView/{Activation => Services}/ActivationService.cs | 4 +++- .../Projects/SplitView/SplitView/uct.SplitViewProject.csproj | 2 +- templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs | 2 +- .../TabbedPivot/{Activation => Services}/ActivationService.cs | 4 +++- .../TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj | 2 +- 10 files changed, 16 insertions(+), 11 deletions(-) rename templates/Projects/Blank/Blank/{Activation => Services}/ActivationService.cs (97%) rename templates/Projects/SplitView/SplitView/{Activation => Services}/ActivationService.cs (97%) rename templates/Projects/TabbedPivot/TabbedPivot/{Activation => Services}/ActivationService.cs (96%) diff --git a/code/src/Core/Configuration/Configuration.cs b/code/src/Core/Configuration/Configuration.cs index 52b2dbeb4..dfc1c1823 100644 --- a/code/src/Core/Configuration/Configuration.cs +++ b/code/src/Core/Configuration/Configuration.cs @@ -23,7 +23,7 @@ namespace Microsoft.Templates.Core public string RepositoryFolderName { get; set; } = @"UWPTemplates"; public TraceEventType DiagnosticsTraceLevel { get; set; } = TraceEventType.Verbose; public int DaysToKeepDiagnosticsLogs { get; set; } = 5; - public int VersionCheckingExpirationMinutes { get; set; } = 5; + public int VersionCheckingExpirationMinutes { get; set; } = 0; public List AllowedPublicKeysPins { get; set; } = new List() { }; public const string DefaultJsonConfigFileName = "UwpTemplates.config.json"; diff --git a/templates/Projects/Blank/Blank/App.xaml.cs b/templates/Projects/Blank/Blank/App.xaml.cs index aeaeab897..06eb63173 100644 --- a/templates/Projects/Blank/Blank/App.xaml.cs +++ b/templates/Projects/Blank/Blank/App.xaml.cs @@ -15,8 +15,7 @@ using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; -using uct.BlankProject.Main; -using uct.BlankProject.Activation; +using uct.BlankProject.Services; namespace uct.BlankProject { diff --git a/templates/Projects/Blank/Blank/Activation/ActivationService.cs b/templates/Projects/Blank/Blank/Services/ActivationService.cs similarity index 97% rename from templates/Projects/Blank/Blank/Activation/ActivationService.cs rename to templates/Projects/Blank/Blank/Services/ActivationService.cs index 82b2aeb1f..6d38eda88 100644 --- a/templates/Projects/Blank/Blank/Activation/ActivationService.cs +++ b/templates/Projects/Blank/Blank/Services/ActivationService.cs @@ -9,7 +9,9 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; -namespace uct.BlankProject.Activation +using uct.BlankProject.Activation; + +namespace uct.BlankProject.Services { class ActivationService { diff --git a/templates/Projects/Blank/Blank/uct.BlankProject.csproj b/templates/Projects/Blank/Blank/uct.BlankProject.csproj index b3489b269..eb793b478 100644 --- a/templates/Projects/Blank/Blank/uct.BlankProject.csproj +++ b/templates/Projects/Blank/Blank/uct.BlankProject.csproj @@ -95,7 +95,7 @@ - + diff --git a/templates/Projects/SplitView/SplitView/App.xaml.cs b/templates/Projects/SplitView/SplitView/App.xaml.cs index d13c0109e..f2f4de6c2 100644 --- a/templates/Projects/SplitView/SplitView/App.xaml.cs +++ b/templates/Projects/SplitView/SplitView/App.xaml.cs @@ -15,7 +15,7 @@ using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; -using uct.SplitViewProject.Activation; +using uct.SplitViewProject.Services; namespace uct.SplitViewProject { diff --git a/templates/Projects/SplitView/SplitView/Activation/ActivationService.cs b/templates/Projects/SplitView/SplitView/Services/ActivationService.cs similarity index 97% rename from templates/Projects/SplitView/SplitView/Activation/ActivationService.cs rename to templates/Projects/SplitView/SplitView/Services/ActivationService.cs index e3a230ccf..afb2e1380 100644 --- a/templates/Projects/SplitView/SplitView/Activation/ActivationService.cs +++ b/templates/Projects/SplitView/SplitView/Services/ActivationService.cs @@ -9,7 +9,9 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; -namespace uct.SplitViewProject.Activation +using uct.SplitViewProject.Activation; + +namespace uct.SplitViewProject.Services { class ActivationService { diff --git a/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj b/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj index 6f0956b4c..67f3e1a55 100644 --- a/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj +++ b/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj @@ -93,7 +93,7 @@ - + diff --git a/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs b/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs index 167fba276..835b7adab 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs +++ b/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs @@ -15,7 +15,7 @@ using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; -using uct.TabbedPivotProject.Activation; +using uct.TabbedPivotProject.Services; namespace uct.TabbedPivotProject { diff --git a/templates/Projects/TabbedPivot/TabbedPivot/Activation/ActivationService.cs b/templates/Projects/TabbedPivot/TabbedPivot/Services/ActivationService.cs similarity index 96% rename from templates/Projects/TabbedPivot/TabbedPivot/Activation/ActivationService.cs rename to templates/Projects/TabbedPivot/TabbedPivot/Services/ActivationService.cs index 08d680084..bf5a41b76 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/Activation/ActivationService.cs +++ b/templates/Projects/TabbedPivot/TabbedPivot/Services/ActivationService.cs @@ -9,7 +9,9 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; -namespace uct.TabbedPivotProject.Activation +using uct.TabbedPivotProject.Activation; + +namespace uct.TabbedPivotProject.Services { class ActivationService { diff --git a/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj b/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj index a551799f4..4c597a5e9 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj +++ b/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj @@ -95,7 +95,7 @@ - + From 5a44f77fb11fa1f1629bc5bddc5a117ccf55b566 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Wed, 22 Mar 2017 09:12:30 +0100 Subject: [PATCH 15/20] Structure of MVVM project --- code/src/Core/Configuration/Configuration.cs | 2 +- .../View/uct.ItemNamePage_postaction.xaml.cs | 14 ++++++++++++++ .../uct.ItemNameViewModel_postaction.cs | 0 .../uct.ItemNamePage_postaction.xaml.cs | 10 ---------- .../ShellViewModel_postaction.cs | 5 +++-- .../.template.config/template.json | 4 ++-- .../{Shell => Model}/ShellNavigationItem.cs | 2 +- .../Shell/ShellPage_postaction.xaml.cs | 12 ------------ .../View/ShellView_postaction.xaml.cs | 16 ++++++++++++++++ .../{Shell => ViewModel}/ShellViewModel.cs | 3 ++- .../PivotPage/PivotPageViewModel_postaction.cs | 11 ----------- .../Strings/en-us/Resources_postaction.resw | 2 +- .../ViewModel/PivotViewModel_postaction.cs | 12 ++++++++++++ .../.template.config/template.json | 2 +- .../PivotPage/PivotPage_postaction.xaml.cs | 10 ---------- .../View/PivotView_postaction.xaml.cs | 10 ++++++++++ .../PivotViewModel.cs} | 7 ++++--- .../Page/.template.config/template.json | 3 --- .../uct.ItemNamePage_postaction.xaml | 0 .../View/uct.ItemNamePage_postaction.xaml.cs | 14 ++++++++++++++ .../uct.ItemNameViewModel_postaction.cs | 2 +- .../Page/ViewModelLocator_postaction.cs | 18 +++++++++++++++--- .../Page/uct.ItemName/ViewModelLocator.cs | 18 ------------------ .../uct.ItemNamePage_postaction.xaml.cs | 10 ---------- .../ShellViewModel_postaction.cs | 3 +-- .../.template.config/template.json | 7 ++----- .../{Shell => Model}/ShellNavigationItem.cs | 2 +- .../Shell/ViewModelLocator.cs | 14 -------------- .../ShellView_postaction.xaml} | 0 .../ShellView_postaction.xaml.cs} | 9 +++++---- .../{Shell => ViewModel}/ShellViewModel.cs | 3 ++- .../ViewModelLocator_postaction.cs | 14 ++++++++++---- .../PivotPage/PivotPageViewModel_postaction.cs | 11 ----------- .../Strings/en-us/Resources_postaction.resw | 2 +- .../ViewModel/PivotViewModel_postaction.cs | 13 +++++++++++++ .../.template.config/template.json | 5 +---- .../PivotPage/PivotPage_postaction.xaml.cs | 4 ---- .../PivotPage/ViewModelLocator.cs | 18 ------------------ .../PivotView_postaction.xaml} | 2 +- .../View/PivotView_postaction.xaml.cs | 7 +++++++ .../PivotViewModel.cs} | 7 ++++--- .../ViewModelLocator_postaction.cs | 18 +++++++++++++++--- .../MVVMLight/Project/ViewModelLocator.cs | 7 +++++-- .../Pages/Blank/.template.config/template.json | 6 +++--- .../{BlankPage => View}/BlankPagePage.xaml | 2 +- .../{BlankPage => View}/BlankPagePage.xaml.cs | 2 +- .../BlankPageViewModel.cs | 3 +-- .../Pages/Map/.template.config/template.json | 6 +++--- .../Map/{MapPage => View}/MapPagePage.xaml | 2 +- .../Map/{MapPage => View}/MapPagePage.xaml.cs | 2 +- .../{MapPage => ViewModel}/MapPageViewModel.cs | 2 +- .../.template.config/template.json | 10 +++++----- .../{MasterDetailPage => Model}/SampleModel.cs | 2 +- .../SampleModelService.cs | 4 ++-- .../MasterDetailPagePage.xaml | 2 +- .../MasterDetailPagePage.xaml.cs | 2 +- .../MasterDetailPageViewModel.cs | 4 +++- .../Settings/.template.config/template.json | 6 +++--- .../SettingsPagePage.xaml | 2 +- .../SettingsPagePage.xaml.cs | 2 +- .../SettingsPageViewModel.cs | 2 +- .../TabbedPivot/.template.config/template.json | 6 +++--- .../TabbedPivotPagePage.xaml | 2 +- .../TabbedPivotPagePage.xaml.cs | 2 +- .../TabbedPivotPageViewModel.cs | 2 +- .../WebView/.template.config/template.json | 6 +++--- .../{WebViewPage => View}/WebViewPagePage.xaml | 2 +- .../WebViewPagePage.xaml.cs | 2 +- .../WebViewPageViewModel.cs | 2 +- templates/Projects/Blank/Blank/App.xaml.cs | 4 ++-- .../Projects/SplitView/SplitView/App.xaml.cs | 3 ++- .../ShellPage.xaml => View/ShellView.xaml} | 6 +++--- .../ShellView.xaml.cs} | 6 +++--- .../SplitView/uct.SplitViewProject.csproj | 6 +++--- .../TabbedPivot/TabbedPivot/App.xaml.cs | 3 ++- .../{PivotPage => Model}/PivotTabbedItem.cs | 2 +- .../TabbedPivot/PivotPage/PivotPage.xaml.cs | 12 ------------ .../PivotPage.xaml => View/PivotView.xaml} | 4 ++-- .../TabbedPivot/View/PivotView.xaml.cs | 13 +++++++++++++ .../TabbedPivot/uct.TabbedPivotProject.csproj | 8 ++++---- 80 files changed, 243 insertions(+), 242 deletions(-) create mode 100644 templates/Frameworks/Basic/Page/View/uct.ItemNamePage_postaction.xaml.cs rename templates/Frameworks/Basic/Page/{uct.ItemName => ViewModel}/uct.ItemNameViewModel_postaction.cs (100%) delete mode 100644 templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs rename templates/Frameworks/Basic/Project.SplitView.Page/{Shell => ViewModel}/ShellViewModel_postaction.cs (78%) rename templates/Frameworks/Basic/Project.SplitView/{Shell => Model}/ShellNavigationItem.cs (95%) delete mode 100644 templates/Frameworks/Basic/Project.SplitView/Shell/ShellPage_postaction.xaml.cs create mode 100644 templates/Frameworks/Basic/Project.SplitView/View/ShellView_postaction.xaml.cs rename templates/Frameworks/Basic/Project.SplitView/{Shell => ViewModel}/ShellViewModel.cs (98%) delete mode 100644 templates/Frameworks/Basic/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs create mode 100644 templates/Frameworks/Basic/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs delete mode 100644 templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs create mode 100644 templates/Frameworks/Basic/Project.TabbedPivot/View/PivotView_postaction.xaml.cs rename templates/Frameworks/Basic/Project.TabbedPivot/{PivotPage/PivotPageViewModel.cs => ViewModel/PivotViewModel.cs} (81%) rename templates/Frameworks/MVVMLight/Page/{uct.ItemName => View}/uct.ItemNamePage_postaction.xaml (100%) create mode 100644 templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml.cs rename templates/Frameworks/MVVMLight/Page/{uct.ItemName => ViewModel}/uct.ItemNameViewModel_postaction.cs (62%) delete mode 100644 templates/Frameworks/MVVMLight/Page/uct.ItemName/ViewModelLocator.cs delete mode 100644 templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs rename templates/Frameworks/MVVMLight/Project.SplitView.Page/{Shell => ViewModel}/ShellViewModel_postaction.cs (83%) rename templates/Frameworks/MVVMLight/Project.SplitView/{Shell => Model}/ShellNavigationItem.cs (94%) delete mode 100644 templates/Frameworks/MVVMLight/Project.SplitView/Shell/ViewModelLocator.cs rename templates/Frameworks/MVVMLight/Project.SplitView/{Shell/ShellPage_postaction.xaml => View/ShellView_postaction.xaml} (100%) rename templates/Frameworks/MVVMLight/Project.SplitView/{Shell/ShellPage_postaction.xaml.cs => View/ShellView_postaction.xaml.cs} (65%) rename templates/Frameworks/MVVMLight/Project.SplitView/{Shell => ViewModel}/ShellViewModel.cs (98%) delete mode 100644 templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs create mode 100644 templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs delete mode 100644 templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs delete mode 100644 templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/ViewModelLocator.cs rename templates/Frameworks/MVVMLight/Project.TabbedPivot/{PivotPage/PivotPage_postaction.xaml => View/PivotView_postaction.xaml} (54%) create mode 100644 templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml.cs rename templates/Frameworks/MVVMLight/Project.TabbedPivot/{PivotPage/PivotPageViewModel.cs => ViewModel/PivotViewModel.cs} (80%) rename templates/Pages/Blank/{BlankPage => View}/BlankPagePage.xaml (91%) rename templates/Pages/Blank/{BlankPage => View}/BlankPagePage.xaml.cs (85%) rename templates/Pages/Blank/{BlankPage => ViewModel}/BlankPageViewModel.cs (82%) rename templates/Pages/Map/{MapPage => View}/MapPagePage.xaml (91%) rename templates/Pages/Map/{MapPage => View}/MapPagePage.xaml.cs (94%) rename templates/Pages/Map/{MapPage => ViewModel}/MapPageViewModel.cs (98%) rename templates/Pages/MasterDetail/{MasterDetailPage => Model}/SampleModel.cs (86%) rename templates/Pages/MasterDetail/{MasterDetailPage => Services}/SampleModelService.cs (97%) rename templates/Pages/MasterDetail/{MasterDetailPage => View}/MasterDetailPagePage.xaml (98%) rename templates/Pages/MasterDetail/{MasterDetailPage => View}/MasterDetailPagePage.xaml.cs (93%) rename templates/Pages/MasterDetail/{MasterDetailPage => ViewModel}/MasterDetailPageViewModel.cs (97%) rename templates/Pages/Settings/{SettingsPage => View}/SettingsPagePage.xaml (97%) rename templates/Pages/Settings/{SettingsPage => View}/SettingsPagePage.xaml.cs (84%) rename templates/Pages/Settings/{SettingsPage => ViewModel}/SettingsPageViewModel.cs (97%) rename templates/Pages/TabbedPivot/{TabbedPivotPage => View}/TabbedPivotPagePage.xaml (91%) rename templates/Pages/TabbedPivot/{TabbedPivotPage => View}/TabbedPivotPagePage.xaml.cs (83%) rename templates/Pages/TabbedPivot/{TabbedPivotPage => ViewModel}/TabbedPivotPageViewModel.cs (82%) rename templates/Pages/WebView/{WebViewPage => View}/WebViewPagePage.xaml (89%) rename templates/Pages/WebView/{WebViewPage => View}/WebViewPagePage.xaml.cs (93%) rename templates/Pages/WebView/{WebViewPage => ViewModel}/WebViewPageViewModel.cs (93%) rename templates/Projects/SplitView/SplitView/{Shell/ShellPage.xaml => View/ShellView.xaml} (96%) rename templates/Projects/SplitView/SplitView/{Shell/ShellPage.xaml.cs => View/ShellView.xaml.cs} (77%) rename templates/Projects/TabbedPivot/TabbedPivot/{PivotPage => Model}/PivotTabbedItem.cs (87%) delete mode 100644 templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml.cs rename templates/Projects/TabbedPivot/TabbedPivot/{PivotPage/PivotPage.xaml => View/PivotView.xaml} (86%) create mode 100644 templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml.cs diff --git a/code/src/Core/Configuration/Configuration.cs b/code/src/Core/Configuration/Configuration.cs index 52b2dbeb4..dfc1c1823 100644 --- a/code/src/Core/Configuration/Configuration.cs +++ b/code/src/Core/Configuration/Configuration.cs @@ -23,7 +23,7 @@ namespace Microsoft.Templates.Core public string RepositoryFolderName { get; set; } = @"UWPTemplates"; public TraceEventType DiagnosticsTraceLevel { get; set; } = TraceEventType.Verbose; public int DaysToKeepDiagnosticsLogs { get; set; } = 5; - public int VersionCheckingExpirationMinutes { get; set; } = 5; + public int VersionCheckingExpirationMinutes { get; set; } = 0; public List AllowedPublicKeysPins { get; set; } = new List() { }; public const string DefaultJsonConfigFileName = "UwpTemplates.config.json"; diff --git a/templates/Frameworks/Basic/Page/View/uct.ItemNamePage_postaction.xaml.cs b/templates/Frameworks/Basic/Page/View/uct.ItemNamePage_postaction.xaml.cs new file mode 100644 index 000000000..169d8989b --- /dev/null +++ b/templates/Frameworks/Basic/Page/View/uct.ItemNamePage_postaction.xaml.cs @@ -0,0 +1,14 @@ +using ItemNamespace.ViewModel; +namespace ItemNamespace.View +{ + public sealed partial class uct.ItemNamePage : Page + { + public uct.ItemNameViewModel ViewModel { get; } = new uct.ItemNameViewModel(); + + public uct.ItemNamePage() + { + DataContext = ViewModel; + this.InitializeComponent(); + } + } +} diff --git a/templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNameViewModel_postaction.cs b/templates/Frameworks/Basic/Page/ViewModel/uct.ItemNameViewModel_postaction.cs similarity index 100% rename from templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNameViewModel_postaction.cs rename to templates/Frameworks/Basic/Page/ViewModel/uct.ItemNameViewModel_postaction.cs diff --git a/templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs b/templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs deleted file mode 100644 index f4e5217de..000000000 --- a/templates/Frameworks/Basic/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -public sealed partial class uct.ItemNamePage : Page -{ - public uct.ItemNameViewModel ViewModel { get; } = new uct.ItemNameViewModel(); - - public uct.ItemNamePage() - { - DataContext = ViewModel; - this.InitializeComponent(); - } -} diff --git a/templates/Frameworks/Basic/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs b/templates/Frameworks/Basic/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs similarity index 78% rename from templates/Frameworks/Basic/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs rename to templates/Frameworks/Basic/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs index 54e9cd1fa..a61424a8d 100644 --- a/templates/Frameworks/Basic/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs +++ b/templates/Frameworks/Basic/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs @@ -1,5 +1,6 @@ -using ItemNamespace.uct.ItemName; -namespace ItemNamespace.Shell +using ItemNamespace.Model; +using ItemNamespace.View; +namespace ItemNamespace.ViewModel { public class ShellViewModel : Observable { diff --git a/templates/Frameworks/Basic/Project.SplitView/.template.config/template.json b/templates/Frameworks/Basic/Project.SplitView/.template.config/template.json index 9f35457aa..d349bcf62 100644 --- a/templates/Frameworks/Basic/Project.SplitView/.template.config/template.json +++ b/templates/Frameworks/Basic/Project.SplitView/.template.config/template.json @@ -20,10 +20,10 @@ "preferNameDirectory": true, "PrimaryOutputs": [ { - "path": ".\\Shell\\ShellNavigationItem.cs" + "path": ".\\Model\\ShellNavigationItem.cs" }, { - "path": ".\\Shell\\ShellViewModel.cs" + "path": ".\\ViewModel\\ShellViewModel.cs" } ], "symbols": { diff --git a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellNavigationItem.cs b/templates/Frameworks/Basic/Project.SplitView/Model/ShellNavigationItem.cs similarity index 95% rename from templates/Frameworks/Basic/Project.SplitView/Shell/ShellNavigationItem.cs rename to templates/Frameworks/Basic/Project.SplitView/Model/ShellNavigationItem.cs index a41c5f7dd..191bd7f58 100644 --- a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellNavigationItem.cs +++ b/templates/Frameworks/Basic/Project.SplitView/Model/ShellNavigationItem.cs @@ -2,7 +2,7 @@ using Windows.UI.Xaml.Controls; -namespace uct.ItemName.Shell +namespace uct.ItemName.Model { public class ShellNavigationItem { diff --git a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellPage_postaction.xaml.cs b/templates/Frameworks/Basic/Project.SplitView/Shell/ShellPage_postaction.xaml.cs deleted file mode 100644 index 437d1befe..000000000 --- a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellPage_postaction.xaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -public sealed partial class ShellPage : Page -{ - public ShellViewModel ViewModel { get; } = new ShellViewModel(); - - public ShellPage() - { - DataContext = ViewModel; - this.InitializeComponent(); - - NavigationService.SetNavigationFrame(frame); - } -} \ No newline at end of file diff --git a/templates/Frameworks/Basic/Project.SplitView/View/ShellView_postaction.xaml.cs b/templates/Frameworks/Basic/Project.SplitView/View/ShellView_postaction.xaml.cs new file mode 100644 index 000000000..89fb58085 --- /dev/null +++ b/templates/Frameworks/Basic/Project.SplitView/View/ShellView_postaction.xaml.cs @@ -0,0 +1,16 @@ +using RootNamespace.ViewModel; +namespace RootNamespace.View +{ + public sealed partial class ShellView : Page + { + public ShellViewModel ViewModel { get; } = new ShellViewModel(); + + public ShellView() + { + DataContext = ViewModel; + this.InitializeComponent(); + + NavigationService.SetNavigationFrame(frame); + } + } +} diff --git a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellViewModel.cs b/templates/Frameworks/Basic/Project.SplitView/ViewModel/ShellViewModel.cs similarity index 98% rename from templates/Frameworks/Basic/Project.SplitView/Shell/ShellViewModel.cs rename to templates/Frameworks/Basic/Project.SplitView/ViewModel/ShellViewModel.cs index 278848c7e..e4d137bad 100644 --- a/templates/Frameworks/Basic/Project.SplitView/Shell/ShellViewModel.cs +++ b/templates/Frameworks/Basic/Project.SplitView/ViewModel/ShellViewModel.cs @@ -4,10 +4,11 @@ using System.Linq; using System.Windows.Input; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; +using uct.ItemName.Model; using uct.ItemName.Mvvm; using uct.ItemName.Services; -namespace uct.ItemName.Shell +namespace uct.ItemName.ViewModel { public class ShellViewModel : Observable { diff --git a/templates/Frameworks/Basic/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs b/templates/Frameworks/Basic/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs deleted file mode 100644 index b832514e2..000000000 --- a/templates/Frameworks/Basic/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace ItemNamespace.PivotPage -{ - public class PivotPageViewModel : Observable - { - public PivotPageViewModel() - { - //^^ - Items.Add(new PivotTabbedItem("PivotPage_uct.ItemName".GetLocalized(), new uct.ItemName.uct.ItemNamePage())); - } - } -} \ No newline at end of file diff --git a/templates/Frameworks/Basic/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw b/templates/Frameworks/Basic/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw index e256af465..2e42ade2f 100644 --- a/templates/Frameworks/Basic/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw +++ b/templates/Frameworks/Basic/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw @@ -1,7 +1,7 @@ - + uct.ItemName diff --git a/templates/Frameworks/Basic/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs b/templates/Frameworks/Basic/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs new file mode 100644 index 000000000..329cf0ac9 --- /dev/null +++ b/templates/Frameworks/Basic/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs @@ -0,0 +1,12 @@ +using ItemNamespace.View; +namespace ItemNamespace.ViewModel +{ + public class PivotViewModel : Observable + { + public PivotViewModel() + { + //^^ + Items.Add(new PivotTabbedItem("PivotView_uct.ItemName".GetLocalized(), new uct.ItemNamePage())); + } + } +} \ No newline at end of file diff --git a/templates/Frameworks/Basic/Project.TabbedPivot/.template.config/template.json b/templates/Frameworks/Basic/Project.TabbedPivot/.template.config/template.json index 638327e0d..19c1ee2e5 100644 --- a/templates/Frameworks/Basic/Project.TabbedPivot/.template.config/template.json +++ b/templates/Frameworks/Basic/Project.TabbedPivot/.template.config/template.json @@ -20,7 +20,7 @@ "preferNameDirectory": true, "PrimaryOutputs": [ { - "path": ".\\PivotPage\\PivotPageViewModel.cs" + "path": ".\\ViewModel\\PivotViewModel.cs" } ], "symbols": { diff --git a/templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs b/templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs deleted file mode 100644 index 6fd73917b..000000000 --- a/templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -public sealed partial class PivotPage : Page -{ - public PivotPageViewModel ViewModel { get; } = new PivotPageViewModel(); - - public PivotPage() - { - DataContext = ViewModel; - this.InitializeComponent(); - } -} diff --git a/templates/Frameworks/Basic/Project.TabbedPivot/View/PivotView_postaction.xaml.cs b/templates/Frameworks/Basic/Project.TabbedPivot/View/PivotView_postaction.xaml.cs new file mode 100644 index 000000000..0f06362cf --- /dev/null +++ b/templates/Frameworks/Basic/Project.TabbedPivot/View/PivotView_postaction.xaml.cs @@ -0,0 +1,10 @@ +public sealed partial class PivotView : Page +{ + public PivotViewModel ViewModel { get; } = new PivotViewModel(); + + public PivotView() + { + DataContext = ViewModel; + this.InitializeComponent(); + } +} diff --git a/templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs b/templates/Frameworks/Basic/Project.TabbedPivot/ViewModel/PivotViewModel.cs similarity index 81% rename from templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs rename to templates/Frameworks/Basic/Project.TabbedPivot/ViewModel/PivotViewModel.cs index 4c4129930..f0b6b7e76 100644 --- a/templates/Frameworks/Basic/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs +++ b/templates/Frameworks/Basic/Project.TabbedPivot/ViewModel/PivotViewModel.cs @@ -1,10 +1,11 @@ using System.Collections.ObjectModel; using System.Windows.Input; +using uct.ItemName.Model; using uct.ItemName.Mvvm; -namespace uct.ItemName.PivotPage +namespace uct.ItemName.ViewModel { - public class PivotPageViewModel : Observable + public class PivotViewModel : Observable { private ObservableCollection _items = new ObservableCollection(); public ObservableCollection Items @@ -13,7 +14,7 @@ namespace uct.ItemName.PivotPage set { Set(ref _items, value); } } - public PivotPageViewModel() + public PivotViewModel() { //TODO: UWPTemplates -> Show pages in Pivot by adding a navigation item for each page with its name. //Edit String/en-US/Resources.resw: Add a menu item title for each page diff --git a/templates/Frameworks/MVVMLight/Page/.template.config/template.json b/templates/Frameworks/MVVMLight/Page/.template.config/template.json index 08be6eed8..390accbea 100644 --- a/templates/Frameworks/MVVMLight/Page/.template.config/template.json +++ b/templates/Frameworks/MVVMLight/Page/.template.config/template.json @@ -21,9 +21,6 @@ "sourceName": "uct.ItemName", "preferNameDirectory": true, "PrimaryOutputs": [ - { - "path": ".\\uct.ItemName\\ViewModelLocator.cs" - } ], "symbols": { "rootNamespace": { diff --git a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml b/templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml similarity index 100% rename from templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml rename to templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml diff --git a/templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml.cs new file mode 100644 index 000000000..13690a0eb --- /dev/null +++ b/templates/Frameworks/MVVMLight/Page/View/uct.ItemNamePage_postaction.xaml.cs @@ -0,0 +1,14 @@ +using ItemNamespace.ViewModel; +namespace ItemNamespace.View +{ + public sealed partial class uct.ItemNamePage : Page + { + //{[{ + private uct.ItemNameViewModel ViewModel + { + get { return DataContext as uct.ItemNameViewModel; } + } + + //}]} + } +} diff --git a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNameViewModel_postaction.cs b/templates/Frameworks/MVVMLight/Page/ViewModel/uct.ItemNameViewModel_postaction.cs similarity index 62% rename from templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNameViewModel_postaction.cs rename to templates/Frameworks/MVVMLight/Page/ViewModel/uct.ItemNameViewModel_postaction.cs index 243cf48db..9cc46374d 100644 --- a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNameViewModel_postaction.cs +++ b/templates/Frameworks/MVVMLight/Page/ViewModel/uct.ItemNameViewModel_postaction.cs @@ -1,6 +1,6 @@ using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; -namespace ItemNamespace.uct.ItemName +namespace ItemNamespace.ViewModel { } \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Page/ViewModelLocator_postaction.cs b/templates/Frameworks/MVVMLight/Page/ViewModelLocator_postaction.cs index 8331018c3..6b1c429d7 100644 --- a/templates/Frameworks/MVVMLight/Page/ViewModelLocator_postaction.cs +++ b/templates/Frameworks/MVVMLight/Page/ViewModelLocator_postaction.cs @@ -1,5 +1,17 @@ -public ViewModelLocator() +public class ViewModelLocator { - //^^ - Registeruct.ItemName(navigationService); + public ViewModelLocator() + { + //^^ + Registeruct.ItemName(navigationService); + } + + public uct.ItemNameViewModel uct.ItemNameViewModel => ServiceLocator.Current.GetInstance(); + //{[{ + public void Registeruct.ItemName(NavigationService navigationService) + { + SimpleIoc.Default.Register(); + navigationService.Configure(typeof(uct.ItemNameViewModel).FullName, typeof(uct.ItemNamePage)); + } + //}]} } \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Page/uct.ItemName/ViewModelLocator.cs b/templates/Frameworks/MVVMLight/Page/uct.ItemName/ViewModelLocator.cs deleted file mode 100644 index 690c3b459..000000000 --- a/templates/Frameworks/MVVMLight/Page/uct.ItemName/ViewModelLocator.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.Practices.ServiceLocation; -using GalaSoft.MvvmLight.Ioc; -using RootNamespace.Services; -using RootNamespace.uct.ItemName; - -namespace RootNamespace -{ - public partial class ViewModelLocator - { - public uct.ItemNameViewModel uct.ItemNameViewModel => ServiceLocator.Current.GetInstance(); - - public void Registeruct.ItemName(NavigationService navigationService) - { - SimpleIoc.Default.Register(); - navigationService.Configure(typeof(uct.ItemNameViewModel).FullName, typeof(uct.ItemNamePage)); - } - } -} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs deleted file mode 100644 index 7f3cf1edf..000000000 --- a/templates/Frameworks/MVVMLight/Page/uct.ItemName/uct.ItemNamePage_postaction.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -public sealed partial class uct.ItemNamePage : Page -{ - //{[{ - private uct.ItemNameViewModel ViewModel - { - get { return DataContext as uct.ItemNameViewModel; } - } - - //}]} -} diff --git a/templates/Frameworks/MVVMLight/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs b/templates/Frameworks/MVVMLight/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs similarity index 83% rename from templates/Frameworks/MVVMLight/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs rename to templates/Frameworks/MVVMLight/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs index 01333419c..5c7d2ca3c 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView.Page/Shell/ShellViewModel_postaction.cs +++ b/templates/Frameworks/MVVMLight/Project.SplitView.Page/ViewModel/ShellViewModel_postaction.cs @@ -1,5 +1,4 @@ -using ItemNamespace.uct.ItemName; -namespace ItemNamespace.Shell +namespace ItemNamespace.ViewModel { public class ShellViewModel : ViewModelBase { diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/.template.config/template.json b/templates/Frameworks/MVVMLight/Project.SplitView/.template.config/template.json index f53d532b6..ae7e03799 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView/.template.config/template.json +++ b/templates/Frameworks/MVVMLight/Project.SplitView/.template.config/template.json @@ -20,13 +20,10 @@ "preferNameDirectory": true, "PrimaryOutputs": [ { - "path": ".\\Shell\\ShellNavigationItem.cs" + "path": ".\\Model\\ShellNavigationItem.cs" }, { - "path": ".\\Shell\\ShellViewModel.cs" - }, - { - "path": ".\\Shell\\ViewModelLocator.cs" + "path": ".\\ViewModel\\ShellViewModel.cs" } ], "symbols": { diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellNavigationItem.cs b/templates/Frameworks/MVVMLight/Project.SplitView/Model/ShellNavigationItem.cs similarity index 94% rename from templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellNavigationItem.cs rename to templates/Frameworks/MVVMLight/Project.SplitView/Model/ShellNavigationItem.cs index 8d8a3bdc6..39b7dae40 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellNavigationItem.cs +++ b/templates/Frameworks/MVVMLight/Project.SplitView/Model/ShellNavigationItem.cs @@ -2,7 +2,7 @@ using Windows.ApplicationModel.Resources; using Windows.UI.Xaml.Controls; -namespace uct.ItemName.Shell +namespace uct.ItemName.Model { public class ShellNavigationItem { diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ViewModelLocator.cs b/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ViewModelLocator.cs deleted file mode 100644 index 5cb0d0636..000000000 --- a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ViewModelLocator.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Microsoft.Practices.ServiceLocation; -using GalaSoft.MvvmLight.Ioc; - -using RootNamespace.Shell; - -namespace RootNamespace -{ - public partial class ViewModelLocator - { - public ShellViewModel ShellViewModel => ServiceLocator.Current.GetInstance(); - - public void RegisterShell() => SimpleIoc.Default.Register(); - } -} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellPage_postaction.xaml b/templates/Frameworks/MVVMLight/Project.SplitView/View/ShellView_postaction.xaml similarity index 100% rename from templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellPage_postaction.xaml rename to templates/Frameworks/MVVMLight/Project.SplitView/View/ShellView_postaction.xaml diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellPage_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Project.SplitView/View/ShellView_postaction.xaml.cs similarity index 65% rename from templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellPage_postaction.xaml.cs rename to templates/Frameworks/MVVMLight/Project.SplitView/View/ShellView_postaction.xaml.cs index 8ca26d64f..c4d6252cf 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellPage_postaction.xaml.cs +++ b/templates/Frameworks/MVVMLight/Project.SplitView/View/ShellView_postaction.xaml.cs @@ -1,13 +1,14 @@ -using Microsoft.Practices.ServiceLocation; -namespace uct.ItemName.Shell +using ItemNamespace.ViewModel; +using Microsoft.Practices.ServiceLocation; +namespace uct.ItemName.View { - public sealed partial class ShellPage : Page + public sealed partial class ShellView : Page { private ShellViewModel ViewModel { get { return DataContext as ShellViewModel; } } private NavigationService navigationService { get { return ServiceLocator.Current.GetInstance(); } } - public ShellPage() + public ShellView() { this.InitializeComponent(); diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellViewModel.cs b/templates/Frameworks/MVVMLight/Project.SplitView/ViewModel/ShellViewModel.cs similarity index 98% rename from templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellViewModel.cs rename to templates/Frameworks/MVVMLight/Project.SplitView/ViewModel/ShellViewModel.cs index 946bab6ce..4df83a2d2 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView/Shell/ShellViewModel.cs +++ b/templates/Frameworks/MVVMLight/Project.SplitView/ViewModel/ShellViewModel.cs @@ -8,8 +8,9 @@ using Windows.UI.Xaml.Navigation; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using uct.ItemName.Services; +using uct.ItemName.Model; -namespace uct.ItemName.Shell +namespace uct.ItemName.ViewModel { public class ShellViewModel : ViewModelBase { diff --git a/templates/Frameworks/MVVMLight/Project.SplitView/ViewModelLocator_postaction.cs b/templates/Frameworks/MVVMLight/Project.SplitView/ViewModelLocator_postaction.cs index 7aa20792a..a9d876226 100644 --- a/templates/Frameworks/MVVMLight/Project.SplitView/ViewModelLocator_postaction.cs +++ b/templates/Frameworks/MVVMLight/Project.SplitView/ViewModelLocator_postaction.cs @@ -1,5 +1,11 @@ -public ViewModelLocator() +public class ViewModelLocator { - //^^ - RegisterShell(); -} \ No newline at end of file + public ViewModelLocator() + { + //^^ + RegisterShell(); + } + + public ShellViewModel ShellViewModel => ServiceLocator.Current.GetInstance(); + public void RegisterShell() => SimpleIoc.Default.Register(); +} diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs deleted file mode 100644 index ccfeb2307..000000000 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/PivotPage/PivotPageViewModel_postaction.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace ItemNamespace.PivotPage -{ - public class PivotPageViewModel : ViewModelBase - { - public PivotPageViewModel() - { - //^^ - Items.Add(new PivotTabbedItem("PivotPage_uct.ItemName".GetLocalized(), new uct.ItemName.uct.ItemNamePage())); - } - } -} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw b/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw index e256af465..2e42ade2f 100644 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/Strings/en-us/Resources_postaction.resw @@ -1,7 +1,7 @@ - + uct.ItemName diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs new file mode 100644 index 000000000..68e945674 --- /dev/null +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot.Page/ViewModel/PivotViewModel_postaction.cs @@ -0,0 +1,13 @@ +using ItemNamespace.Model; +using ItemNamespace.View; +namespace ItemNamespace.ViewModel +{ + public class PivotViewModel : ViewModelBase + { + public PivotViewModel() + { + //^^ + Items.Add(new PivotTabbedItem("PivotView_uct.ItemName".GetLocalized(), new uct.ItemNamePage())); + } + } +} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/.template.config/template.json b/templates/Frameworks/MVVMLight/Project.TabbedPivot/.template.config/template.json index 6ecbe38d9..9ed8e2508 100644 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/.template.config/template.json +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot/.template.config/template.json @@ -20,10 +20,7 @@ "preferNameDirectory": true, "PrimaryOutputs": [ { - "path": ".\\PivotPage\\PivotPageViewModel.cs" - }, - { - "path": ".\\PivotPage\\ViewModelLocator.cs" + "path": ".\\ViewModel\\PivotViewModel.cs" } ], "symbols": { diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs deleted file mode 100644 index 9ab0a2c59..000000000 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml.cs +++ /dev/null @@ -1,4 +0,0 @@ -public sealed partial class PivotPage : Page -{ - private PivotPageViewModel ViewModel { get { return DataContext as PivotPageViewModel; } } -} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/ViewModelLocator.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/ViewModelLocator.cs deleted file mode 100644 index 4e15bb4be..000000000 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/ViewModelLocator.cs +++ /dev/null @@ -1,18 +0,0 @@ -using GalaSoft.MvvmLight.Ioc; -using Microsoft.Practices.ServiceLocation; -using uct.ItemName.PivotPage; -using uct.ItemName.Services; - -namespace uct.ItemName -{ - public partial class ViewModelLocator - { - public PivotPageViewModel PivotPageViewModel => ServiceLocator.Current.GetInstance(); - - public void RegisterPivotPage(NavigationService navigationService) - { - SimpleIoc.Default.Register(); - navigationService.Configure(typeof(PivotPageViewModel).FullName, typeof(PivotPage.PivotPage)); - } - } -} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml b/templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml similarity index 54% rename from templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml rename to templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml index af7a938c1..ea0044809 100644 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPage_postaction.xaml +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml.cs new file mode 100644 index 000000000..ec787ba1c --- /dev/null +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot/View/PivotView_postaction.xaml.cs @@ -0,0 +1,7 @@ +namespace RootNamespace.View +{ + public sealed partial class PivotView : Page + { + private PivotViewModel ViewModel { get { return DataContext as PivotViewModel; } } + } +} \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModel/PivotViewModel.cs similarity index 80% rename from templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs rename to templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModel/PivotViewModel.cs index 842d407fd..5e6e956eb 100644 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/PivotPage/PivotPageViewModel.cs +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModel/PivotViewModel.cs @@ -1,9 +1,10 @@ using System.Collections.ObjectModel; using GalaSoft.MvvmLight; +using uct.ItemName.Model; -namespace uct.ItemName.PivotPage +namespace uct.ItemName.ViewModel { - public class PivotPageViewModel : ViewModelBase + public class PivotViewModel : ViewModelBase { private ObservableCollection _items = new ObservableCollection(); public ObservableCollection Items @@ -12,7 +13,7 @@ namespace uct.ItemName.PivotPage set { Set(ref _items, value); } } - public PivotPageViewModel() + public PivotViewModel() { //TODO: UWPTemplates -> Show pages in Pivot by adding a navigation item for each page with its name. //Edit String/en-US/Resources.resw: Add a menu item title for each page diff --git a/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModelLocator_postaction.cs b/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModelLocator_postaction.cs index 89aab3324..0829f3cfb 100644 --- a/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModelLocator_postaction.cs +++ b/templates/Frameworks/MVVMLight/Project.TabbedPivot/ViewModelLocator_postaction.cs @@ -1,5 +1,17 @@ -public ViewModelLocator() +public class ViewModelLocator { - //^^ - RegisterPivotPage(navigationService); + public ViewModelLocator() + { + //^^ + RegisterPivotView(navigationService); + } + + public PivotViewModel PivotViewModel => ServiceLocator.Current.GetInstance(); + //{[{ + public void RegisterPivotView(NavigationService navigationService) + { + SimpleIoc.Default.Register(); + navigationService.Configure(typeof(PivotViewModel).FullName, typeof(PivotView)); + } + //}]} } \ No newline at end of file diff --git a/templates/Frameworks/MVVMLight/Project/ViewModelLocator.cs b/templates/Frameworks/MVVMLight/Project/ViewModelLocator.cs index c417b12f7..473f7fa50 100644 --- a/templates/Frameworks/MVVMLight/Project/ViewModelLocator.cs +++ b/templates/Frameworks/MVVMLight/Project/ViewModelLocator.cs @@ -1,15 +1,18 @@ using GalaSoft.MvvmLight.Ioc; using Microsoft.Practices.ServiceLocation; +using RootNamespace.Services; +using RootNamespace.View; +using RootNamespace.ViewModel; namespace RootNamespace { - public partial class ViewModelLocator + public class ViewModelLocator { public ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); - var navigationService = new Services.NavigationService(); + var navigationService = new NavigationService(); SimpleIoc.Default.Register(() => navigationService); } diff --git a/templates/Pages/Blank/.template.config/template.json b/templates/Pages/Blank/.template.config/template.json index 8b3ce4e44..a61168d7d 100644 --- a/templates/Pages/Blank/.template.config/template.json +++ b/templates/Pages/Blank/.template.config/template.json @@ -20,13 +20,13 @@ "preferNameDirectory": true, "PrimaryOutputs": [ { - "path": ".\\BlankPage\\BlankPagePage.xaml" + "path": ".\\View\\BlankPagePage.xaml" }, { - "path": ".\\BlankPage\\BlankPagePage.xaml.cs" + "path": ".\\View\\BlankPagePage.xaml.cs" }, { - "path": ".\\BlankPage\\BlankPageViewModel.cs" + "path": ".\\ViewModel\\BlankPageViewModel.cs" } ], "symbols": { diff --git a/templates/Pages/Blank/BlankPage/BlankPagePage.xaml b/templates/Pages/Blank/View/BlankPagePage.xaml similarity index 91% rename from templates/Pages/Blank/BlankPage/BlankPagePage.xaml rename to templates/Pages/Blank/View/BlankPagePage.xaml index 1bf8e3b70..d0a962b82 100644 --- a/templates/Pages/Blank/BlankPage/BlankPagePage.xaml +++ b/templates/Pages/Blank/View/BlankPagePage.xaml @@ -1,5 +1,5 @@ diff --git a/templates/Projects/SplitView/SplitView/App.xaml.cs b/templates/Projects/SplitView/SplitView/App.xaml.cs index d13c0109e..6794f2b12 100644 --- a/templates/Projects/SplitView/SplitView/App.xaml.cs +++ b/templates/Projects/SplitView/SplitView/App.xaml.cs @@ -16,6 +16,7 @@ using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; using uct.SplitViewProject.Activation; +using uct.SplitViewProject.View; namespace uct.SplitViewProject { @@ -34,7 +35,7 @@ namespace uct.SplitViewProject { this.InitializeComponent(); - _activationService = new ActivationService(this, typeof(Shell.ShellPage)); + _activationService = new ActivationService(this, typeof(ShellView)); } /// diff --git a/templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml b/templates/Projects/SplitView/SplitView/View/ShellView.xaml similarity index 96% rename from templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml rename to templates/Projects/SplitView/SplitView/View/ShellView.xaml index c520a122d..d06067501 100644 --- a/templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml +++ b/templates/Projects/SplitView/SplitView/View/ShellView.xaml @@ -1,15 +1,15 @@ - + diff --git a/templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml.cs b/templates/Projects/SplitView/SplitView/View/ShellView.xaml.cs similarity index 77% rename from templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml.cs rename to templates/Projects/SplitView/SplitView/View/ShellView.xaml.cs index 6708bdccc..06930b53a 100644 --- a/templates/Projects/SplitView/SplitView/Shell/ShellPage.xaml.cs +++ b/templates/Projects/SplitView/SplitView/View/ShellView.xaml.cs @@ -2,11 +2,11 @@ using uct.SplitViewProject.Services; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; -namespace uct.SplitViewProject.Shell +namespace uct.SplitViewProject.View { - public sealed partial class ShellPage : Page + public sealed partial class ShellView : Page { - public ShellPage() + public ShellView() { this.InitializeComponent(); } diff --git a/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj b/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj index 6f0956b4c..e41993266 100644 --- a/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj +++ b/templates/Projects/SplitView/SplitView/uct.SplitViewProject.csproj @@ -108,12 +108,12 @@ - + MSBuild:Compile Designer - - ShellPage.xaml + + ShellView.xaml diff --git a/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs b/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs index 167fba276..760d5ab2a 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs +++ b/templates/Projects/TabbedPivot/TabbedPivot/App.xaml.cs @@ -16,6 +16,7 @@ using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; using uct.TabbedPivotProject.Activation; +using uct.TabbedPivotProject.View; namespace uct.TabbedPivotProject { @@ -34,7 +35,7 @@ namespace uct.TabbedPivotProject { this.InitializeComponent(); - _activationService = new ActivationService(this, typeof(PivotPage.PivotPage)); + _activationService = new ActivationService(this, typeof(PivotView)); } /// diff --git a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotTabbedItem.cs b/templates/Projects/TabbedPivot/TabbedPivot/Model/PivotTabbedItem.cs similarity index 87% rename from templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotTabbedItem.cs rename to templates/Projects/TabbedPivot/TabbedPivot/Model/PivotTabbedItem.cs index d3af2ff99..868f02804 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotTabbedItem.cs +++ b/templates/Projects/TabbedPivot/TabbedPivot/Model/PivotTabbedItem.cs @@ -1,6 +1,6 @@ using Windows.UI.Xaml.Controls; -namespace uct.TabbedPivotProject.PivotPage +namespace uct.TabbedPivotProject.Model { public class PivotTabbedItem { diff --git a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml.cs b/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml.cs deleted file mode 100644 index 40fa02358..000000000 --- a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Windows.UI.Xaml.Controls; - -namespace uct.TabbedPivotProject.PivotPage -{ - public sealed partial class PivotPage : Page - { - public PivotPage() - { - this.InitializeComponent(); - } - } -} diff --git a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml b/templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml similarity index 86% rename from templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml rename to templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml index fdb72a0bb..6ee79bd9c 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/PivotPage/PivotPage.xaml +++ b/templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml @@ -1,5 +1,5 @@ - + diff --git a/templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml.cs b/templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml.cs new file mode 100644 index 000000000..507fcad06 --- /dev/null +++ b/templates/Projects/TabbedPivot/TabbedPivot/View/PivotView.xaml.cs @@ -0,0 +1,13 @@ +using uct.TabbedPivotProject.ViewModel; +using Windows.UI.Xaml.Controls; + +namespace uct.TabbedPivotProject.View +{ + public sealed partial class PivotView : Page + { + public PivotView() + { + this.InitializeComponent(); + } + } +} diff --git a/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj b/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj index a551799f4..e760649a0 100644 --- a/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj +++ b/templates/Projects/TabbedPivot/TabbedPivot/uct.TabbedPivotProject.csproj @@ -100,14 +100,14 @@ - + MSBuild:Compile Designer - - PivotPage.xaml + + PivotView.xaml - + From 92731069d5b10697cda6d9c6d5a989101fcd97d4 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Wed, 22 Mar 2017 09:35:18 +0100 Subject: [PATCH 16/20] Bug Fixing on ActivationService Postactions --- .../{Activation => Services}/ActivationService_postaction.cs | 0 .../{Activation => Services}/ActivationService_postaction.cs | 0 .../{Activation => Services}/ActivationService_postaction.cs | 0 .../{Activation => Services}/ActivationService_postaction.cs | 0 .../{Activation => Services}/ActivationService_postaction.cs | 0 .../{Activation => Services}/ActivationService_postaction.cs | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename templates/ConsumerFeatures/HubNotifications/{Activation => Services}/ActivationService_postaction.cs (100%) rename templates/ConsumerFeatures/LiveTile/{Activation => Services}/ActivationService_postaction.cs (100%) rename templates/ConsumerFeatures/ToastNotifications/{Activation => Services}/ActivationService_postaction.cs (100%) rename templates/DevFeatures/BackgroundTask/{Activation => Services}/ActivationService_postaction.cs (100%) rename templates/DevFeatures/SuspendAndResume/{Activation => Services}/ActivationService_postaction.cs (100%) rename templates/Pages/Settings/{Activation => Services}/ActivationService_postaction.cs (100%) diff --git a/templates/ConsumerFeatures/HubNotifications/Activation/ActivationService_postaction.cs b/templates/ConsumerFeatures/HubNotifications/Services/ActivationService_postaction.cs similarity index 100% rename from templates/ConsumerFeatures/HubNotifications/Activation/ActivationService_postaction.cs rename to templates/ConsumerFeatures/HubNotifications/Services/ActivationService_postaction.cs diff --git a/templates/ConsumerFeatures/LiveTile/Activation/ActivationService_postaction.cs b/templates/ConsumerFeatures/LiveTile/Services/ActivationService_postaction.cs similarity index 100% rename from templates/ConsumerFeatures/LiveTile/Activation/ActivationService_postaction.cs rename to templates/ConsumerFeatures/LiveTile/Services/ActivationService_postaction.cs diff --git a/templates/ConsumerFeatures/ToastNotifications/Activation/ActivationService_postaction.cs b/templates/ConsumerFeatures/ToastNotifications/Services/ActivationService_postaction.cs similarity index 100% rename from templates/ConsumerFeatures/ToastNotifications/Activation/ActivationService_postaction.cs rename to templates/ConsumerFeatures/ToastNotifications/Services/ActivationService_postaction.cs diff --git a/templates/DevFeatures/BackgroundTask/Activation/ActivationService_postaction.cs b/templates/DevFeatures/BackgroundTask/Services/ActivationService_postaction.cs similarity index 100% rename from templates/DevFeatures/BackgroundTask/Activation/ActivationService_postaction.cs rename to templates/DevFeatures/BackgroundTask/Services/ActivationService_postaction.cs diff --git a/templates/DevFeatures/SuspendAndResume/Activation/ActivationService_postaction.cs b/templates/DevFeatures/SuspendAndResume/Services/ActivationService_postaction.cs similarity index 100% rename from templates/DevFeatures/SuspendAndResume/Activation/ActivationService_postaction.cs rename to templates/DevFeatures/SuspendAndResume/Services/ActivationService_postaction.cs diff --git a/templates/Pages/Settings/Activation/ActivationService_postaction.cs b/templates/Pages/Settings/Services/ActivationService_postaction.cs similarity index 100% rename from templates/Pages/Settings/Activation/ActivationService_postaction.cs rename to templates/Pages/Settings/Services/ActivationService_postaction.cs From b75527b23c682fbde3d960544e40bc564eb827c8 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Wed, 22 Mar 2017 09:46:38 +0100 Subject: [PATCH 17/20] Move ViewModel initialization from OnNavigatedTo to OnLoaded in Map and WebView pages --- templates/Pages/Map/View/MapPagePage.xaml | 1 + templates/Pages/Map/View/MapPagePage.xaml.cs | 4 ++-- templates/Pages/WebView/View/WebViewPagePage.xaml | 1 + templates/Pages/WebView/View/WebViewPagePage.xaml.cs | 3 +-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/templates/Pages/Map/View/MapPagePage.xaml b/templates/Pages/Map/View/MapPagePage.xaml index 2a481a008..95c6dea15 100644 --- a/templates/Pages/Map/View/MapPagePage.xaml +++ b/templates/Pages/Map/View/MapPagePage.xaml @@ -5,6 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:maps="using:Windows.UI.Xaml.Controls.Maps" + Loaded="OnLoaded" mc:Ignorable="d"> diff --git a/templates/Pages/Map/View/MapPagePage.xaml.cs b/templates/Pages/Map/View/MapPagePage.xaml.cs index 4f7a13b94..b586e98b7 100644 --- a/templates/Pages/Map/View/MapPagePage.xaml.cs +++ b/templates/Pages/Map/View/MapPagePage.xaml.cs @@ -1,6 +1,6 @@ using System; +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Navigation; namespace ItemNamespace.View { @@ -11,7 +11,7 @@ namespace ItemNamespace.View this.InitializeComponent(); } - protected override void OnNavigatedTo(NavigationEventArgs e) + private void OnLoaded(object sender, RoutedEventArgs e) { if (ViewModel == null) { diff --git a/templates/Pages/WebView/View/WebViewPagePage.xaml b/templates/Pages/WebView/View/WebViewPagePage.xaml index 11668c5b0..f8f66a949 100644 --- a/templates/Pages/WebView/View/WebViewPagePage.xaml +++ b/templates/Pages/WebView/View/WebViewPagePage.xaml @@ -4,6 +4,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + Loaded="OnLoaded" mc:Ignorable="d"> diff --git a/templates/Pages/WebView/View/WebViewPagePage.xaml.cs b/templates/Pages/WebView/View/WebViewPagePage.xaml.cs index 0b8bda73f..fd78e56ea 100644 --- a/templates/Pages/WebView/View/WebViewPagePage.xaml.cs +++ b/templates/Pages/WebView/View/WebViewPagePage.xaml.cs @@ -1,7 +1,6 @@ using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Navigation; namespace ItemNamespace.View { @@ -12,7 +11,7 @@ namespace ItemNamespace.View this.InitializeComponent(); } - protected override void OnNavigatedTo(NavigationEventArgs e) + private void OnLoaded(object sender, RoutedEventArgs e) { if (ViewModel == null) { From 6989a56fac328dcc844e41f18961e2e5af58cec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Alarc=C3=B3n?= Date: Wed, 22 Mar 2017 09:53:09 +0100 Subject: [PATCH 18/20] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 05971822d..86b785ac0 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@ |Env|CI |Templates Publishing |Extension Publishing | |:-----|:--------:|:-------------------:|:-------------------:| |dev|![CI Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/121/badge) | ![Templates Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/123/badge) | ![Extension Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/122/badge)| -|pre-release|[CI Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/125/badge)|[Templates Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/124/badge)|[Extension Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/126/badge)| +|pre-release|![CI Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/125/badge)|![Templates Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/124/badge)|![Extension Publishing Build](https://winappstudio.visualstudio.com/_apis/public/build/definitions/5c80cfe7-3bfb-4799-9d04-803c84df7a60/126/badge)| UWP Community Template Generator =========== From 38a8954f8f1971759d7ee8f7b12b22ef6d8548b0 Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Wed, 22 Mar 2017 09:58:00 +0100 Subject: [PATCH 19/20] Fix Theme change not being reflected --- .../Pages/Settings/Services/ActivationService_postaction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/Pages/Settings/Services/ActivationService_postaction.cs b/templates/Pages/Settings/Services/ActivationService_postaction.cs index 821e173a5..ff4556993 100644 --- a/templates/Pages/Settings/Services/ActivationService_postaction.cs +++ b/templates/Pages/Settings/Services/ActivationService_postaction.cs @@ -1,4 +1,4 @@ -private async Task InitializeAsync() +private async Task StartupAsync() { Services.ThemeSelectorService.SetRequestedTheme(); } \ No newline at end of file From 43a54dfa773c7f8186cfd7023edde2edd63835aa Mon Sep 17 00:00:00 2001 From: Martin Vega Date: Wed, 22 Mar 2017 10:06:42 +0100 Subject: [PATCH 20/20] Code review of ThemeSelectorService --- .../Settings/Services/ThemeSelectorService.cs | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/templates/Pages/Settings/Services/ThemeSelectorService.cs b/templates/Pages/Settings/Services/ThemeSelectorService.cs index 915abc4d8..8a4befb86 100644 --- a/templates/Pages/Settings/Services/ThemeSelectorService.cs +++ b/templates/Pages/Settings/Services/ThemeSelectorService.cs @@ -5,18 +5,12 @@ using RootNamespace.Extensions; namespace RootNamespace.Services { - public enum Theme - { - Light, - Dark - } - public static class ThemeSelectorService { private const string SettingsKey = "RequestedTheme"; - public static bool IsLightThemeEnabled => Theme == Theme.Light; - public static Theme Theme { get; set; } + public static bool IsLightThemeEnabled => Theme == ElementTheme.Light; + public static ElementTheme Theme { get; set; } static ThemeSelectorService() { @@ -25,46 +19,48 @@ namespace RootNamespace.Services public static void SwitchTheme() { - if (Theme == Theme.Dark) + if (Theme == ElementTheme.Dark) { - SetTheme(Theme.Light); + SetTheme(ElementTheme.Light); } else { - SetTheme(Theme.Dark); + SetTheme(ElementTheme.Dark); } } - public static void SetTheme(Theme theme) + + public static void SetTheme(ElementTheme theme) { Theme = theme; SetRequestedTheme(); SaveThemeInSettings(Theme); } + public static void SetRequestedTheme() { - var elementTheme = Theme == Theme.Dark ? ElementTheme.Dark : ElementTheme.Light; var frameworkElement = Window.Current.Content as FrameworkElement; if (frameworkElement != null) { - frameworkElement.RequestedTheme = elementTheme; + frameworkElement.RequestedTheme = Theme; } } - private static Theme LoadThemeFromSettings() + private static ElementTheme LoadThemeFromSettings() { - Theme cacheTheme = Theme.Light; + ElementTheme cacheTheme = ElementTheme.Light; string themeName = ApplicationData.Current.LocalSettings.Read(SettingsKey); if (String.IsNullOrEmpty(themeName)) { - cacheTheme = Application.Current.RequestedTheme == ApplicationTheme.Dark ? Theme.Dark : Theme.Light; + cacheTheme = Application.Current.RequestedTheme == ApplicationTheme.Dark ? ElementTheme.Dark : ElementTheme.Light; } else { - Enum.TryParse(themeName, out cacheTheme); + Enum.TryParse(themeName, out cacheTheme); } return cacheTheme; } - private static void SaveThemeInSettings(Theme theme) + + private static void SaveThemeInSettings(ElementTheme theme) { ApplicationData.Current.LocalSettings.Save(SettingsKey, theme.ToString()); }