From d9cb6d6324d5fef585ebfa58bc989dd5d1f1c4eb Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Wed, 18 Jul 2018 08:57:57 +0100 Subject: [PATCH 01/26] Added nuspec file to publish to nuget Added nuspec file to publish to nuget --- Masonry.nuspec | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Masonry.nuspec diff --git a/Masonry.nuspec b/Masonry.nuspec new file mode 100644 index 0000000..7459b8f --- /dev/null +++ b/Masonry.nuspec @@ -0,0 +1,16 @@ + + + + wpfmasonry + $version$ + WPF Masonry + https://github.com/Lizzaran/WPF-Masonry + https://github.com/Lizzaran/WPF-Masonry/blob/master/LICENSE + Lizzaran + Lizzaran + false + Fluid layout grid for WPF + Initial Release + Copyright 2013 - 2016 Nikita Bernthaler + + \ No newline at end of file From ec054f4780f01c611678d601765a23edb795d3d5 Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Mon, 12 Oct 2020 10:47:27 +0100 Subject: [PATCH 02/26] Updated to add net core support --- Masonry.Example/App.config | 7 +- Masonry.Example/Masonry.Example.csproj | 2 +- .../Properties/Resources.Designer.cs | 2 +- .../Properties/Settings.Designer.cs | 2 +- Masonry/Masonry.csproj | 89 +++++-------------- Masonry/Properties/AssemblyInfo.cs | 11 --- 6 files changed, 29 insertions(+), 84 deletions(-) diff --git a/Masonry.Example/App.config b/Masonry.Example/App.config index 9350691..fd3b410 100644 --- a/Masonry.Example/App.config +++ b/Masonry.Example/App.config @@ -1,7 +1,6 @@ - - + - + - \ No newline at end of file + diff --git a/Masonry.Example/Masonry.Example.csproj b/Masonry.Example/Masonry.Example.csproj index de4d39f..f494d42 100644 --- a/Masonry.Example/Masonry.Example.csproj +++ b/Masonry.Example/Masonry.Example.csproj @@ -9,7 +9,7 @@ Properties Masonry.Example Masonry.Example - v4.6 + v4.6.1 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 diff --git a/Masonry.Example/Properties/Resources.Designer.cs b/Masonry.Example/Properties/Resources.Designer.cs index de53592..4a7c0a1 100644 --- a/Masonry.Example/Properties/Resources.Designer.cs +++ b/Masonry.Example/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace Masonry.Example.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/Masonry.Example/Properties/Settings.Designer.cs b/Masonry.Example/Properties/Settings.Designer.cs index 3c6c0fc..fff5e2c 100644 --- a/Masonry.Example/Properties/Settings.Designer.cs +++ b/Masonry.Example/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Masonry.Example.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index a126924..265c56b 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -1,70 +1,27 @@ - - - + - Debug - AnyCPU - {E2BA75BF-C535-46B9-A180-E10533A1C1D1} - Library - Properties - Masonry - Masonry - v4.5.2 - 512 + net461;netcoreapp3.0 + true + true + true + true + wpfmasonry + WPF Masonry + Masonry + $(AssemblyName) ($(TargetFramework)) + Lizzaran newky2k + MIT + 2.0 + Fluid layout grid for WPF (Net Core 3.x and .Net Framework) + https://github.com/newky2k/WPF-Masonry + https://github.com/newky2k/WPF-Masonry + Git + WPF Masonry Fluid + Updated to work with Net Core + + Copyright 2013 - 2016 Nikita Bernthaler - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - Masonry.ruleset - true - bin\Debug\Masonry.xml - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - Masonry.ruleset - - - false - - - - - - - - - - - - - - - - - - - - - - default.licenseheader - + + - - \ No newline at end of file diff --git a/Masonry/Properties/AssemblyInfo.cs b/Masonry/Properties/AssemblyInfo.cs index 4e4b4c7..62ff407 100644 --- a/Masonry/Properties/AssemblyInfo.cs +++ b/Masonry/Properties/AssemblyInfo.cs @@ -27,15 +27,6 @@ You should have received a copy of the GNU General Public License // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Masonry")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Masonry")] -[assembly: AssemblyCopyright("Copyright © 2016 by Nikita Bernthaler")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. @@ -57,5 +48,3 @@ You should have received a copy of the GNU General Public License // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file From 73905ae273f323475aa71f8a1928c6248b2eb50c Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Mon, 12 Oct 2020 10:51:10 +0100 Subject: [PATCH 03/26] Added DevOps build files --- Masonry.Example/Masonry.Example.csproj | 10 +++-- Masonry.nuspec | 16 ------- azure-pipelines-mergetest.yml | 37 ++++++++++++++++ azure-pipelines-release.yml | 60 ++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 20 deletions(-) delete mode 100644 Masonry.nuspec create mode 100644 azure-pipelines-mergetest.yml create mode 100644 azure-pipelines-release.yml diff --git a/Masonry.Example/Masonry.Example.csproj b/Masonry.Example/Masonry.Example.csproj index f494d42..b7ef35e 100644 --- a/Masonry.Example/Masonry.Example.csproj +++ b/Masonry.Example/Masonry.Example.csproj @@ -36,9 +36,6 @@ 4 - - ..\Masonry\bin\Debug\Masonry.dll - ..\packages\Prism.Core.6.1.0\lib\net45\Prism.dll True @@ -116,7 +113,12 @@ - + + + {e2ba75bf-c535-46b9-a180-e10533a1c1d1} + Masonry + + + + + + + + + diff --git a/UWPMasonry/Themes/Generic.xaml b/UWPMasonry/Themes/Generic.xaml new file mode 100644 index 0000000..c2d3d02 --- /dev/null +++ b/UWPMasonry/Themes/Generic.xaml @@ -0,0 +1,15 @@ + + + + diff --git a/UWPMasonry/UWPMasonry.csproj b/UWPMasonry/UWPMasonry.csproj new file mode 100644 index 0000000..f15de72 --- /dev/null +++ b/UWPMasonry/UWPMasonry.csproj @@ -0,0 +1,149 @@ + + + + + Debug + AnyCPU + {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A} + Library + Properties + UWPMasonry + UWPMasonry + en-US + UAP + 10.0.19041.0 + 10.0.17763.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + prompt + 4 + + + x86 + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + x86 + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + ARM + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + ARM + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + ARM64 + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + ARM64 + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + x64 + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + x64 + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + PackageReference + + + + + + + + + 6.2.10 + + + + + MSBuild:Compile + Designer + + + + 14.0 + + + + \ No newline at end of file diff --git a/UWPSample/App.xaml b/UWPSample/App.xaml new file mode 100644 index 0000000..846841f --- /dev/null +++ b/UWPSample/App.xaml @@ -0,0 +1,7 @@ + + + diff --git a/UWPSample/App.xaml.cs b/UWPSample/App.xaml.cs new file mode 100644 index 0000000..d16e016 --- /dev/null +++ b/UWPSample/App.xaml.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace UWPSample +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + sealed partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + //TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (e.PrelaunchActivated == false) + { + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + // Ensure the current window is active + Window.Current.Activate(); + } + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + //TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/UWPSample/Assets/LockScreenLogo.scale-200.png b/UWPSample/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..735f57adb5dfc01886d137b4e493d7e97cf13af3 GIT binary patch literal 1430 zcmaJ>TTC2P7~aKltDttVHYH6u8Io4i*}3fO&d$gd*bA_<3j~&e7%8(eXJLfhS!M@! zKrliY>>6yT4+Kr95$!DoD(Qn-5TP|{V_KS`k~E6(LGS@#`v$hQo&^^BKsw3HIsZBT z_y6C2n`lK@apunKojRQ^(_P}Mgewt$(^BBKCTZ;*xa?J3wQ7~@S0lUvbcLeq1Bg4o zH-bvQi|wt~L7q$~a-gDFP!{&TQfc3fX*6=uHv* zT&1&U(-)L%Xp^djI2?~eBF2cxC@YOP$+9d?P&h?lPy-9M2UT9fg5jKm1t$m#iWE{M zIf%q9@;fyT?0UP>tcw-bLkz;s2LlKl2qeP0w zECS7Ate+Awk|KQ+DOk;fl}Xsy4o^CY=pwq%QAAKKl628_yNPsK>?A>%D8fQG6IgdJ ztnxttBz#NI_a@fk7SU`WtrpsfZsNs9^0(2a z@C3#YO3>k~w7?2hipBf{#b6`}Xw1hlG$yi?;1dDs7k~xDAw@jiI*+tc;t2Lflg&bM)0!Y;0_@=w%`LW^8DsYpS#-bLOklX9r?Ei}TScw|4DbpW%+7 zFgAI)f51s}{y-eWb|vrU-Ya!GuYKP)J7z#*V_k^Xo>4!1Yqj*m)x&0L^tg3GJbVAJ zJ-Pl$R=NAabouV=^z_t;^K*0AvFs!vYU>_<|I^#c?>>CR<(T?=%{;U=aI*SbZADLH z&(f2wz_Y0??Tf|g;?|1Znw6}6U43Q#qNRwv1vp9uFn1)V#*4p&%$mP9x&15^OaBiDS(XppT|z^>;B{PLVEbS3IFYV yGvCsSX*m literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/SplashScreen.scale-200.png b/UWPSample/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..023e7f1feda78d5100569825acedfd213a0d84e9 GIT binary patch literal 7700 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 literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/Square150x150Logo.scale-200.png b/UWPSample/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..af49fec1a5484db1d52a7f9b5ec90a27c7030186 GIT binary patch literal 2937 zcma)84OCO-8BSud5)jwMLRVKgX(S?$n?Ld|vrsm<$CF7)&zTbyy1FE5bU`Q17MRv`9ue$;R(@8kR;#vJ*IM0>cJIAOte!d7oRgdH zd%ySjdB6L9=gX^A6)VzH7p2l@v~3zJAMw|DFy#^)F@@F*`mqUn=Il>l)8_+ab;nOW{%+iPx z+s{Eu|&pIs)Z7{La9~?xKfyl z#43?gjEL15d4WbOZo#SiP%>DB^+BcnJ=7dHEe;r#G=tuw|ka z%q@}##Uh7;tc%L_64m(kHtw74ty%BJMb)_1)#S0j`)F8_1jF7vScpsnH=0V19bO8y zR`0SjIdCUo&=>JwMQF8KHA<{ODHTiQh}0^@5QRmCA?gOH6_H3K^-_sNB^RrdNuK-R zOO*vOrKCVvDwgUck`kF(E7j{I#iiN;b*ZdCt4m@HPA`EuEqGGf4%!K<;(=I=&Vyrw z%TwcWtxa}8mCZ%Cyf&ActJ6_$ox5z6-D!0-dvnRx6t7y3d+h6QYpKWO;8OdnvERo7 zuEf>ih5`wqY)~o@OeVt-wM?Q!>QzdGRj!bz6fzYrfw$hZfAKzr2-M+D+R>}~oT574c;_3zquHcElqKIsryILt3g8n3jcMb+j?i?-L3FpZJ z2WRVBRdDPc+G5aaYg#5hpE+6nQ|(VSoxT3|biF;BUq#==-27Xi=gihDPYP$7?=9cP zYKE$jeQ|3~_L0VG-(F~2ZPyD0=k{J4Q~h(t__{-mz_w8{JDY9{`1ouzz!Vr5!ECdE z6U~O1k8c}24V7~zzXWTV-Pe4)y}wQJS&q%H5`Fo_f_JvIU489aCX$;P`u#!I-=^4ijC2{&9!O&h>mi?9oYD=GC#%)6{GzN6nQYw+Fal50!#x^asjBBR50i`+mho*ttoqV)ubM2KD9S~k7+FR4>{29?6 z{!l6kDdyTN0YJ9LgkPWeXm|gyi@zM3?0@{&pXT12w|78&W-q!RRF)&iLCEZVH<|fR zN0fr2^t8H(>L?>K#>^+jWROLral(Qy-xoBq1U7A&DV||wClb)Otd9?(gZ|8znMF}D zf<1haWz^s0qgecz;RFGt0C-B4g`jNGHsFU+;{<%t65v^sjk^h$lmWn#B0#_)9ij&d z-~lc`A)YYExi^7sBuPM^Y|wA2g*5?`K?#7tzELQYNxGo$UB$4J8RJp1k(8Jj+~hMT zlN~>M@KTTh^--8y3PK_NZ@AC!{PT=CziBzGd+wTJ^@icH!Bd}%)g8V)%K?|c&WTUk zy}qv1C%(fjRoZ4ozC3{O%@5?)XzH35zHns$pgU*Q?fj4v?fp1Qbm+j;3l;9jam9Da zXVcKjPlQ73x78QPu|Ffm6x?`~e3oD=gl=4kYK?={kD5j~QCXU)`HSdduNNENzA*2$ zOm3PzF!lN5e*06-f1Uot67wY#{o-S1!KZ7E=!~7ynnk9_iJR#kFoNbAOT#^2Gd17F zMmvU6>lndZQGd|ax9kUoXXO+$N?|j@6qpsF&_j7YXvwo_C{JpmLw5&#e6k>atv%es z5)7r*Wvv_JkUpT}M!_o!nVlEk1Zbl=a*2hQ*<|%*K1Glj^FcF`6kTzGQ3lz~2tCc@ z&x|tj;aH&1&9HwcJBcT`;{?a+pnej;M1HO(6Z{#J!cZA04hnFl;NXA+&`=7bjW_^o zfC40u3LMG?NdPtwGl>Tq6u}*QG)}-y;)lu-_>ee3kibW(69n0$0Zy!}9rQz%*v1iO zT9_H>99yIrSPYVy6^);rR}7Yo=J_T@hi+qhTZXnVWyf;JDYm5#eYLTxr*?kiNn!+Y zQ+LUkBafNJ#rH#C(?d5^;gw9o#%daEI{mA*LHPIHPU`#|H$hD zwm>0&+kahQ)E#%~k>&5@&#Vg82H?s%71=)(soi@174pi9--2{w{1$}Sz4zGn3Du&x bht0Iza^2ykEt4(epJ78uh5nDlX8(TxzDYwP literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/Square44x44Logo.scale-200.png b/UWPSample/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ce342a2ec8a61291ba76c54604aea7e9d20af11b GIT binary patch literal 1647 zcmaJ?eM}Q)7(e+G1Q(|`V9JhTI2>MkceK4;p;PR&$Pi?ejk3YQ_3o`S&|W_dsOZ8# zWPTt69g`t$ab`0cj-Y0yiBSOqmd)tG7G(}M5aP0_%&9TijB#&)I{zSE^4@#z^FF`l z`8{8`o%wlL(UI|y2!cdsuVamHH~H86F!*-15em4)NqUpCQM5?aoC_eCf@lV4wvF2a zjDQn1JBL69f&@2M3rvzJcfE!eZ8FZUBlFlC5RD)it33{mF9#B82AiyQE%w)`vlwa> zv{<1sm&kSKK$&%2jSFn7$t&P%%6Ue>R=EAnG8N7fqynWG8L3p!4801a;8{+nliO(qd(jNJ_?+9W3#hLIDLoT6~3fx9=`CC-D}-AMrpEO7HK zt3$GicGPc?GmDjy7K2P@La;eu4!$zWCZ`ym{Z$b zu-O6RM&K4JT|BIZB`E-gxqG%FzanI#+2FFmqHqXG7yxWB=w55RGOM)$xMb(>kSNR z2w=1AZi%z=AmG~yea~XaXJR!v7vLn(RUnELfiB1|6D84ICOS}^Zo2AdN}<&*h}G_u z{xZ!(%>tLT3J3<5XhWy-tg+6)0nmUUENLW8TWA{R6bgVd3X;anYFZ^IRis*_P-C-r z;i>%1^eL3UI2-{w8nuFFcs0e~7J{O2k^~Ce%+Ly4U?|=!0LH=t6()xi<^I-rs+9sF z*q{E-CxZbGPeu#a;XJwE;9S1?#R&uns>^0G3p`hEUF*v`M?@h%T%J%RChmD|EVydq zmHWh*_=S%emRC*mhxaVLzT@>Z2SX0u9v*DIJ@WC^kLVdlGV6LpK$KIrlJqc zpJ921)+3JJdTx|<`G&kXpKkjGJv=76R`yYIQ{#c-`%+`#V(7}Q;&@6U8!Td1`d;?N z_9mnI#?AA}4J!r)LN4!E-@H5eXauuB7TOawS>Y|{-P?NNx-lq+z1W-+y(;39P&&LP zL{N80?&=C*qKmdA^moMZRuPcD!B<*mq$ch=0Cnlitw#txRWhb3%TQvPqjkC`F69G4b! ze7z9MZ#+;_#l?H37UqUhDFb^l&s2{oM$3I0o^Q!yx;;V)QmCMo)Tb_ui|mit8MS?U zm##6$sZZ1$@|s%?l@>4Z<*Q}sRBSKMhb4I{e5LdEhsHIHTe8Bod5c>6QtT>$XgUBz z6MK`kO$=jmt@FqggOhJ5j~e@ygRbG;<{Vu)*+nn9aQeo0;$#j;|MS=S$&L?BeV25z xs3B`@=#`5TF{^6(A1rvdY@|-RtQ|iS5{tyX+wH?;n8E)G$kykv-D^wh{{!TZT%7;_ literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/UWPSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c02ce97e0a802b85f6021e822c89f8bf57d5cd GIT binary patch literal 1255 zcmaJ>TWs4@7*5+{G#S+&C!qC#> zf>5N3P6jO*Cz>ug*(_DmW=)kea&m$gZ^+nyiF`;j%w@}y8)>p*SH}C`m?DXeieF2U zyQHecc_L%Gh!7GMt+hG06y;+|p4>m~}PjA}rKViGiEnn7G0ZO<>G|7q;2?NwGCM3s?eued6%hd$B+ z*kQJ{#~$S=DFE(%=E+UkmlEI*%3llUf~8Ja9YU1Vui0IbGBkW_gHB%Rd&!!ioX zs40O?i9I{};kle7GMvE7(rk`la=gTI)47=>%?q@^iL-nUo3}h4S}N-KHn8t5mVP8w z&bSErwp+37 zNJJ8?a|{r5Q3R0Z5s-LB1WHOwYC@7pCHWND#cL1cZ?{kJ368_*(UDWUDyb<}0y@o# zfMF016iMWPCb6obAxT$JlB6(2DrlXDTB&!0`!m??4F(qWMhjVZo?JXQmz`1*58Z=& zcDmB|S-E@j?BoFGix0flckqdS4jsPNzhfWyWIM98GxcLs89C(~dw%$_t;JjX-SD}E zfiGV;{8Q%8r}w9x>EEigW81>`kvnU@pK)4+xk9@+bNj9L!AAZ@SZ@q|)&BmY3+HZx zul~BeG4|}-;L%cHViQGQX?^zFfO0&#cHwel=d`lH9sJ-@Sl@n*(8J2>%Ac`IxyY?Q z{=GhWvC#gu-~Ia7*n{=+;qM?Ul_wy1+u7ho;=`>EwP^g~R@{unBds`!#@}tluZQpS zm)M~nYEifJWJGx?_6DcTy>#uh%>!H9=hb^(v`=m3F1{L>db=<5_tm+_&knAQ2EU$s Mu9UqpbNZeC0BbUo^Z)<= literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/StoreLogo.png b/UWPSample/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..7385b56c0e4d3c6b0efe3324aa1194157d837826 GIT binary patch literal 1451 zcmaJ>eN5D57_Z|bH;{0+1#mbl)eTU3{h)Wf7EZV?;HD@XL@{B`Ui%(2aMxQ~xdXSv z5nzWi(LW)U2=Vc-cY@s7nPt{i0hc6!7xN4NNHI#EQl>YNBy8l4%x9gr_W-j zEZMQmmTIy(>;lblRfh`dIyTgc9W5d!VP$L4(kKrN1c5G~(O_#xG zAJCNTstD^5SeXFB+&$h=ToJP2H>xr$iqPs-#O*;4(!Fjw25-!gEb*)mU}=)J;Iu>w zxK(5XoD0wrPSKQ~rbL^Cw6O_03*l*}i=ydbu7adJ6y;%@tjFeXIXT+ms30pmbOP%Q zX}S;+LBh8Tea~TSkHzvX6$rYb)+n&{kSbIqh|c7hmlxmwSiq5iVhU#iEQ<>a18|O^Sln-8t&+t`*{qBWo5M?wFM(JuimAOb5!K#D}XbslM@#1ZVz_;!9U zpfEpLAOz=0g@bd6Xj_ILi-x^!M}73h^o@}hM$1jflTs|Yuj9AL@A3<-?MV4!^4q`e z)fO@A;{9K^?W?DbnesnPr6kK>$zaKo&;FhFd(GYFCIU^T+OIMb%Tqo+P%oq(IdX7S zf6+HLO?7o0m+p>~Tp5UrXWh!UH!wZ5kv!E`_w)PTpI(#Iw{AS`gH4^b(bm^ZCq^FZ zY9DD7bH}rq9mg88+KgA$Zp!iWncuU2n1AuIa@=sWvUR-s`Qb{R*kk(SPU^`$6BXz8 zn#7yaFOIK%qGxyi`dYtm#&qqox0$h=pNi#u=M8zUG@bpiZ=3sT=1}Trr}39cC)H|v zbL?W)=&s4zrh)7>L(|cc%$1#!zfL?HjpeP%T+x_a+jZ16b^iKOHxFEX$7d|8${H-* zIrOJ5w&i$>*D>AKaIoYg`;{L@jM((Kt?$N$5OnuPqVvq**Nm}(f0wwOF%iX_Pba;V z;m@wxX&NcV3?<1+u?A{y_DIj7#m3Af1rCE)o`D&Y3}0%7E;iX1yMDiS)sh0wKi!36 zL!Wmq?P^Ku&rK~HJd97KkLTRl>ScGFYZNlYytWnhmuu|)L&ND8_PmkayQb{HOY640 bno1(wj@u8DCVuFR|31B*4ek@pZJqxCDDe1x literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/Wide310x150Logo.scale-200.png b/UWPSample/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..288995b397fdbef1fb7e85afd71445d5de1952c5 GIT binary patch literal 3204 zcmbVPeQXow8NYmBd90>}0NP?GhXW~VaeThm=a0tV#EwJMI!)6M3}|c4_Bl3=Kd>G0 z(GHx1wl<7(tP?FsOQkTilSo*iIvF%uArExJ73~P zSv1xEy!U(Wd4A9D`FQV@W3@F^qJ@PEF$@z`Z!*BbFsS(^?B zyiAzJ+q})bkgiQHWqEb*jJD-coHYr1^iocg)l!Qa{Xqs-l~6J}p-|##ZHYofskQ3$ zI0;xzXyhazBeXhIsg5A=%ufo@f)1yy&ScKS0;HF^!r_2UE^lpZEom(+@duma3awTv zCrCL-%D_SvYWIcdHkmI}#50(fkUi)Qgx!80ju>g1za^}ff>JI8Z@^-iCiaCgg@TgF z+vtE?Q9{VQUX&MW9SYYmGcxA14%N2@7FwBTD4N<(2{nWgV8$e3?-F=L^&FrtWn~(U_Q~~^uYiyeY6-KoTnfh9AWz@ zIKje0)u!_Lw)E}G!#kEfwKVdNt(UAf9*f>tEL_(=xco-T%jTi@7YlC3hs2ik%Le0H ztj}RTeCF(5mwvi3_56>-yB?l;J>-1%!9~=fs|QcNG3J~a@JCu`4SB460s0ZO+##4fFUSGLcj_ja^fL4&BKALfb#$6$O?>P@qx2Agl^x0i&ugt zsy5Pyu=()`7HRMG3IB7F1@`_ z+-!J%#i6e^U$e#+C%Q>_qVRzWRsG^W_n+@OcX@vzI&z;mzHNb!GQ?LWA(wtpqHqTM z1OFw_{Zn?fD)p)`c`kOgv{de=v@suGRqY{N^U7gI1VF3*F=obwaXI6ob5__Yn zVTguS!%(NI09J8x#AO_aW!9W7k*UvB;IWDFC3srwftr{kHj%g)fvnAm;&h_dnl~

MY- zf+K}sCe8qU6Ujs`3ua{U0Of$R_gVQBuUA za0v=mu#vIOqiiAZOr&h*$WyOw&k-xr$;G4Ixa!#TJNr>95(h>l%)PUy4p+^SgR(uR zta%k*?ny-+nAr8spEk1fo{J4i!b^Fia`N{_F6@zidA2ZTTrjl#^5Z-2KfB@Cu}l9s z(*|Z2jc?p~vn2f)3y9i*7zJV1L{$?|&q)4oaT;uXi6>1GkRXVTOzAz(RHEmr=eFIi z`}<>-Q?K0GN8!IYxeP1XKXO+jsJbp~o^);Bc;%b7Flpe7;1`Ny@3r7ZR;?R)aJt8C ziNlEC<@3f_lIV4TwV}&e;D!Ee5_|e#g0LUh=5vmYWYm7&2h*M>QPKvGh9-)wfMMW3 z8J9b%1k7dzPzO0_NGQy92BZ^FR6R~6;^6?lqO;-QUP4BY%cG%3vEhbm#>4vIhPBh3 z-+pZGjh$x%Hp{?=FHsMp0&wNPlj00us{&`1ZOZTqs8%4X&xH=UDr*xyBW(Zp&Em94 zf)ZSfn#yg0N)>!1kWdkqJ^S*z0FF5|fj&qcE#Na|%OY0$uO>!&hP+1ywfD_WXk@4J(?MBftK7>$Nvqh@tDuarN%PrTLQ2Uzysx>UV=V zk^RrDSvdQ?0;=hY67EgII-f4`t=+i*yS=Y~!XlqIy_4x&%+OdfbKOFPXS2X5%4R{N z$SQMX^AK6(fA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UWPSample/MainPage.xaml.cs b/UWPSample/MainPage.xaml.cs new file mode 100644 index 0000000..77f1b1e --- /dev/null +++ b/UWPSample/MainPage.xaml.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 + +namespace UWPSample +{ + ///

+ /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainPage : Page + { + + public MainPage() + { + this.InitializeComponent(); + } + } +} diff --git a/UWPSample/Package.appxmanifest b/UWPSample/Package.appxmanifest new file mode 100644 index 0000000..cdb0977 --- /dev/null +++ b/UWPSample/Package.appxmanifest @@ -0,0 +1,49 @@ + + + + + + + + + + UWPSample + newky + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UWPSample/Properties/AssemblyInfo.cs b/UWPSample/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a9d41be --- /dev/null +++ b/UWPSample/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UWPSample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UWPSample")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/UWPSample/Properties/Default.rd.xml b/UWPSample/Properties/Default.rd.xml new file mode 100644 index 0000000..af00722 --- /dev/null +++ b/UWPSample/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/UWPSample/UWPSample.csproj b/UWPSample/UWPSample.csproj new file mode 100644 index 0000000..9ac6637 --- /dev/null +++ b/UWPSample/UWPSample.csproj @@ -0,0 +1,178 @@ + + + + + Debug + x86 + {F1A994D4-2E34-47B2-ACCC-9FB8F578300A} + AppContainerExe + Properties + UWPSample + UWPSample + en-US + UAP + 10.0.19041.0 + 10.0.17763.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + true + false + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM64 + false + prompt + true + true + + + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM64 + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + PackageReference + + + + App.xaml + + + MainPage.xaml + + + + + + + Designer + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + 2.1.2102.81 + + + 6.2.10 + + + + + {cdb0fea7-ae2f-4ba1-ad67-871b764cd05a} + UWPMasonry + + + + 14.0 + + + + \ No newline at end of file diff --git a/UWPSample/ViewModels/MainViewModel.cs b/UWPSample/ViewModels/MainViewModel.cs new file mode 100644 index 0000000..4f73d5b --- /dev/null +++ b/UWPSample/ViewModels/MainViewModel.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Mvvm; +using System.Text; +using System.Threading.Tasks; +using Windows.UI; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media; + +namespace UWPSample.ViewModels +{ + public class MainViewModel : ViewModel + { + private ObservableCollection _elements; + + public ObservableCollection Elements + { + get { return _elements; } + set { _elements = value; NotifyPropertyChanged(nameof(Elements)); } + } + + public MainViewModel() + { + var items = new ObservableCollection(); + + items.Add(new Border() + { + Width = 200, + Height = 400, + Background = new SolidColorBrush(Colors.Green), + }); + + items.Add(new Border() + { + Width = 400, + Height = 200, + Background = new SolidColorBrush(Colors.Red), + }); + + items.Add(new Border() + { + Width = 200, + Height = 200, + Background = new SolidColorBrush(Colors.Gray), + }); + + + items.Add(new Border() + { + Width = 200, + Height = 200, + Background = new SolidColorBrush(Colors.Gray), + }); + + items.Add(new Border() + { + Width = 400, + Height = 400, + Background = new SolidColorBrush(Colors.Orange), + }); + + Elements = items; + } + } +} From 499cddb908925b229ef6ea1057a9a6afe3255652 Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Fri, 12 Feb 2021 22:30:39 +0000 Subject: [PATCH 17/26] Added demo --- UWPMasonry/CustomControl1.cs | 1 + UWPSample/Assets/jobs_white.png | Bin 0 -> 4963 bytes UWPSample/MainPage.xaml | 28 +++++++++++++++++++++++++--- UWPSample/UWPSample.csproj | 4 ++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 UWPSample/Assets/jobs_white.png diff --git a/UWPMasonry/CustomControl1.cs b/UWPMasonry/CustomControl1.cs index 5938d80..cd50d5b 100644 --- a/UWPMasonry/CustomControl1.cs +++ b/UWPMasonry/CustomControl1.cs @@ -358,6 +358,7 @@ protected override void OnApplyTemplate() { base.OnApplyTemplate(); + Update(); } } } diff --git a/UWPSample/Assets/jobs_white.png b/UWPSample/Assets/jobs_white.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2c30d58f3416fe6a6a277ebcc59257e22c4a8f GIT binary patch literal 4963 zcmV-p6P)acP)RmGM5cGK82i1Ly^2S+6!QHc?vd4LK;K|u&gf(#H}gK?Ayh(jD>bd4r) z#Y_?n6NQNQ7y(5kB2kDMM2L@3z<>nt0g5~X148qVK-0iCKhExz!|uBGo^$WH_nu3i zZ>?Uv?m1Pv9($i%Rl9cW5;OpiJQYAs0Nns|1<)2idjQ7(*aKicfNcOi0q`M!r2yUl zutG!*B0)(q{i`G=lKhC-V++YCB+n-)Nw3DA=|XZa$=4Y@-X(c0$tFop$CLTzkbIN* z$6AuZjued`M*!oG0dN<9YcsTG6@b?PECcW{fWHH%22cjzSOBd6bOvxLfOB-NP?m@IFOWRQ;^X#0e|@Tj zYFQfCN%A(5&2nvY50dwj+!2$89VB^O5r?AwB=@p(u$ts4p@smTioXKD$uS$kt{0K} ziaZ|~3}BWHO{IXH0Q!i?vXlZqvJ${0%JlO?j_r#9JQ#7MuLf|Id3KkG{5U3)((3?B zGLP4)eIgA0TWu2l-yiyZj{@*@-|sm(_i>>WfNui05I}`_w;sS*BC^Fc{C<+N zNj_tqPmj2BPbOJo%2+_MQOs5*(;R)&J0y)wCVvm}e!6*oYXF)jlAQ0T+Z2DIDw6X8 zjw8!Rjw5-T=Djt~0`Q!nzk_5|94(S0H#+)CiYWk^ubku@llK70PGxFJeGx$aG&HsV z_$`1lM5LRDOcar=1?bf704_3*ZxxYEv0G1z>;f>}JU#=!z!=o+fDY&WC2}JGL(2h- z18|xn-+mom9sw{0GjJixKu#@o`ARYyG}LQQ6U&#L2|q@@~=v3s?y#_av{lc zQ>fZQ0H()OLA5r&tIJhl$N3)i(Z3BOrvdn15&0lQA?pFWnPWwpIwpTlI~dgnz%K#( zM;cnk>jd`uBrg_`PXZXe<^brPB1sv%y@*95e+A&j4!^-?0Q|%}n+MPTFdYT~$fw8A zIrVs@OTbSvj76`J`~k^h1Iz((mVT1G9814)N4k4Mj;SAzY?Y?mRvG*YT$tz*O!XD; z z*s;HJhE>G<06N*eQ(7-MhD!h#OY%Er7&z$Af@c(2{r?KUiRRfK{2khu61Tc-{ZUD1=X-`qD<)^vE zVIRrVFOALbE+lJ=ecz9&6g0~Lv{TJ}8N4$Pe(VJBqaa^mnfk;}OXGf32#hfGy3xFU zGebMZTbD6Mnx!VqxC}IxnDjT8_akGvC0t9gzkf!X&U$o6MCOY~ofKUS;8n-ins3h!FFMjhO>=h)mx0v)E)tPH1rh*j>lTp*MdTb+zdu(sSqL;WziZ6zOr9>* z9jeli#y;DZfo8J|=_}%7pj0DTHxYT!juqM1l~)6}jpTm;__od$F4PT%C~&kH4{c|E zY<~A8Ss@}d1v2+G(Up@QYwcXf{H_J?d4U*S3-8>+26#S!vqfYLN(Cfmm~rbSYpik1 z*zZn5ueuuO?0d*s!W=jO`1pJ*ws}nbTt}iqnc&?7_Sa0J#%(` zOud{so8&V9#+ui&9b43=nBVJ=AaG}2X}+H2jx=2y>+xb>moA%a{p>F5$b_@O1)!_x zyc&{6JJJnyxQi7MH6#Z)>ebwFaOISQv%v+R5y@?)1BazZd#+j~3ypOo&rVUN;U?{8 zG2C5^y%0QZI`PRgX)8&NCHX4JeR*X1J~fq(Nf#%;;eYp7!qM;oFwAt~9+GVW=50Z; zrSH$~E>@fOE%linz0CU-0n0wlA%vGE9L-{_?O2-qG)r2ME(0@^^$W*Vc4b`qxjc&o z-UVQ2f$C>F?s}5HRu9}b3T-RY-=eMnu#zl@_53LjxjC-_0H6(kjz#L@mH>VV;D(rf zP*bJpOGaZv^_Fd$!zbAmvrPi6HC;(*urs{!~xG=v3fJaNQKchI& zIs@L}k$mEG0Kf75?gHQ`k^@5=SjiXjkAmk~W!3x*0N%-S@mIogWGSiutQC>@d2Z-@ zlHUUGJ>Ro_049_CLAHMX5inl>JOFP;)Q_1WGO+;V_i9K(z_qBqMWD20`e#XuK?)l&;(Tg=8}9k=)u;Ij6aU#!|+a0 z+4uz80GuZxuO-XC!U)0t0XP?KCyOglKU_-`n548VJ_c~Eh`d>feOaBP6D&({HbQY`)5U{!@V&)a&>PJ z`r&7$4pSTI5RjmO&jAuNq&Wb*U>5!js1x7?f2hM204pLc^K^K@r|PiU*dg9;5E2uI zIe?>16HJ|E<)MsOri=+OXm`$YfbuMYIas%&_91E1ipUBia540B)DIGo4)#cUo3Q*W zhj&Y6E*PbML9rS2ZRrU-Jnvv?7!20GBi;_s2Hv%=b+AXVn~{v#5z`(xZDq>XmGA3n z@&RFi{FVJ0Kt!r?6o7l-ju2K%+$SQ}=h&`IIck7NRslN!9E!M%=81OC3cCRuhlVBpQC5E5|j#709xn6ug{V1HZ09r^y0MG*7 z{Rw`2)g-$<5rE=h6%O|kYz*Ln21wdA}g!w&)By2{i9FMZo;M zzL)`HHKOTv9Ci8E2s(X)gYFRyula$N>yh!s2|Brg`&NuW(oQbT}t@ErUz zrhZcZ6X8YjUJ2k`lV!3ifK!O_PDXtP(^c?}e7&S)*9Ea`0$@(ALXgY>f-~Qb-T;<6 z#^n|OURFkC!~6wy-K;{k9QDryl%x>2EP);Ub^wx{LmG0ni^#`m>;R!Hfg~@0cMC_h zw`uHzcPq-Hna&aFyx~fCw~S2?5L2~o~pay=WLX3YORfYEjw7m>fHGsUj~Tm#QN z>o@SOZ#xsf{{ZL~vKoKYdBaiw-v@9bfG@*~2QWcIcAGkoWZe$sb!KAtjNVxGLXQ11 z4&ITtp!l1J++I?4fG}Tviu_&e&EooX_SSWDx*O6y)q8n*JG4wAl3fFopS30^h8-YQ z4k2N`{1p2HD;>`WFK+%qEvFN_8?@?95pRVT>Ey#SbPuYnAyfHz*91`_ZXQ8n9L#?* zDDwlaeZ9*Q@^*oOPY7BAxYP*27yut#^nvPtsq@PaS+qkZ&HW6Tbe7Mi2} zk+ogOEqu%jc-P?uMdmAg;MC9Q(N^0!v03_Rz{JYIZvUQeqXiV}7 zlFz1CVbtLtB>$*s8)sQo3z8cg_XV^o6+6Iil2N)he<=$su!ZDU05g4$+XMI=yr^Jd z8a+sD0-XaSuY`Al_aFeb=+&&VLQX&@;h(pZ*5QXD@@W=*H#o@BGX&ZM(E#~I7*p^p zNB*+{=53-kp5}@tNj42w=2?#XvqH3YQ=yp=_k$sJyLwHKSun}=0GX_8$@V0g9 zzRGq0PKEmd%Ao){k{l!=n==%>OzYSwO&elA2PmorAX!fGE4ph}8|FS=&0p!b*S8My zNDgpa_o5o(B9ebfk#|XuiyugibKKQ?mA0uoZW=&H{<*+1w_QYr`DWy&>#Y0?{ofVt zeg8cGI*7=Q44pU=fW2U96M)M_?$$^#RNC%yM5!AE4 zgYNJQdCIiT6SNI09T!O^0^sO~2_(Os%`ICb|6pjn7-3!K8`@80L8DUJHX#v!)B?~x zOInpAKMy-rhoC>i(B7Rb(@3_DlK>nkN5i_BS@&K5QLb)Y&>4Ikjz)M7qmnSRlq#&| zSR*3;h>Ex_)2#nMr$hka1G~)oBoAd+16GSf0OEs#=69n4^c52Uhz~Yr7!sm@J=}#zz<+!iJ=KPDJ*H)FN%w?R_*71lkMugydY3car>`J?!D2_gx2#??zD1p$@v2 zWXRJ<>+^Gx&uLqdy?~GcV9`4Ry)u$-nLOL|czd>WJXvYj-Nj7%61|hnpv;|H;V|E( z!y^G`_H*Q0on?TCE+p4D=$#)R?;|1F^?8Hb4)%3cmB!q;UA=Zwo!#3k&TPP%lr#KZnIY9n4X*`dsNxn*QBFW21o|b87Yp6nTygGN(m=3%tK;FhA7p7pq z8ze8&yMJxI*2cno4&dxte!}P6s`}n|YjYuS$ zIaUulNuChLzLpp=U(~AS_vbqV?|Sxy5zuc0&w->PyZ{k|28aN#QUgKcTE^J`78y(H z0s!Yn8Ry_g{rbl`zRY_{upJW}?HH4AIDMyeRDV0`hFw{LZD~sKebbgb*%+nriMVYB zO@`-h=f``fAFIC z%m`vOC3$u}Z0ovr(K8_PUE$nz1<9WvOCeAj{1cjP1IeF+^(#n0_X|pEqfZ;PPM9Af zA<)YrHapVRX!?F(h7diX-dB%x)i~&G*2p6X^NTqrAbCuPlehyzlshOy^pIA{{AtOU zUsz4>oJRQ$irYezd0Pm&>m7R*$(LUsA#h=)evSLg^QS|U_q4+oVVYxiG8Gc$7eNTN zk{s$wf2j@e9-=H8dj3-1yP;ZE!u%r533j@+TuD}$v|n;;B?sBlZ|S&Wprc9C)}bZp z#{6ChrwS(oJ4jxWBAw`aKl%iq|82)ko}@@Sl;pOA`NbIyo+jBLL%KzVnRn=ZL%P2^ zOrAv<%IKhVNz{G}1!ZCc9znl7lKbdLzdd|eOlTwmP$Vpm360o7j^xIv2k|a=hefl& hegMtGo&zi;{68=KUGWlBxD)^Y002ovPDHLkV1gqgB^Cex literal 0 HcmV?d00001 diff --git a/UWPSample/MainPage.xaml b/UWPSample/MainPage.xaml index 6a6f188..b829b86 100644 --- a/UWPSample/MainPage.xaml +++ b/UWPSample/MainPage.xaml @@ -7,6 +7,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:uwpmasonry="using:UWPMasonry" xmlns:vm="using:UWPSample.ViewModels" + xmlns:iconPacks="using:MahApps.Metro.IconPacks" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> @@ -31,46 +32,67 @@ - + - + + Style="{StaticResource LargeTileStyle}" > + + + + + + + diff --git a/UWPSample/UWPSample.csproj b/UWPSample/UWPSample.csproj index 9ac6637..795a269 100644 --- a/UWPSample/UWPSample.csproj +++ b/UWPSample/UWPSample.csproj @@ -131,6 +131,7 @@
+ @@ -154,6 +155,9 @@ 2.1.2102.81 + + 4.8.0 + 6.2.10 From 18c7d268f7c2fc2b2973d13d277a078a68c44632 Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Tue, 2 Mar 2021 22:15:18 +0000 Subject: [PATCH 18/26] Work on UWP tiles --- .../{CustomControl1.cs => MasonryControl.cs} | 8 +- UWPMasonry/Themes/Generic.xaml | 54 ++++++++- UWPMasonry/Tile.cs | 105 ++++++++++++++++++ UWPMasonry/UWPMasonry.csproj | 3 +- UWPSample/MainPage.xaml | 60 +++++----- 5 files changed, 198 insertions(+), 32 deletions(-) rename UWPMasonry/{CustomControl1.cs => MasonryControl.cs} (98%) create mode 100644 UWPMasonry/Tile.cs diff --git a/UWPMasonry/CustomControl1.cs b/UWPMasonry/MasonryControl.cs similarity index 98% rename from UWPMasonry/CustomControl1.cs rename to UWPMasonry/MasonryControl.cs index cd50d5b..7d6e92b 100644 --- a/UWPMasonry/CustomControl1.cs +++ b/UWPMasonry/MasonryControl.cs @@ -17,14 +17,14 @@ namespace UWPMasonry { - public class CustomControl1 : ItemsControl + public class MasonryControl : ItemsControl { #region Static Fields /// /// The spacing property /// - public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register(nameof(Spacing),typeof(int), typeof(CustomControl1), null); + public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register(nameof(Spacing),typeof(int), typeof(MasonryControl), null); #endregion @@ -82,9 +82,9 @@ public virtual void Update() #endregion - public CustomControl1() + public MasonryControl() { - this.DefaultStyleKey = typeof(CustomControl1); + this.DefaultStyleKey = typeof(MasonryControl); } diff --git a/UWPMasonry/Themes/Generic.xaml b/UWPMasonry/Themes/Generic.xaml index c2d3d02..5ad3491 100644 --- a/UWPMasonry/Themes/Generic.xaml +++ b/UWPMasonry/Themes/Generic.xaml @@ -3,7 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:UWPMasonry"> - + + + diff --git a/UWPMasonry/Tile.cs b/UWPMasonry/Tile.cs new file mode 100644 index 0000000..71d5acb --- /dev/null +++ b/UWPMasonry/Tile.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Documents; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; + +// The Templated Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234235 + +namespace UWPMasonry +{ + public sealed class Tile : Button + { + public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Title + { + get { return (string)GetValue(TitleProperty); } + set { SetValue(TitleProperty, value); } + } + + /// + /// HorizontalTitleAlignment Dependency Property. + /// Default Value: HorizontalAlignment.Left + /// + public static readonly DependencyProperty HorizontalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(HorizontalTitleAlignment), + typeof(HorizontalAlignment), + typeof(Tile), + new PropertyMetadata(HorizontalAlignment.Left)); + + /// + /// Gets/Sets the horizontal alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public HorizontalAlignment HorizontalTitleAlignment + { + get { return (HorizontalAlignment)GetValue(HorizontalTitleAlignmentProperty); } + set { SetValue(HorizontalTitleAlignmentProperty, value); } + } + + /// + /// VerticalTitleAlignment Dependency Property. + /// Default Value: VerticalAlignment.Bottom + /// + public static readonly DependencyProperty VerticalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(VerticalTitleAlignment), + typeof(VerticalAlignment), + typeof(Tile), + new PropertyMetadata(VerticalAlignment.Bottom)); + + /// + /// Gets/Sets the vertical alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public VerticalAlignment VerticalTitleAlignment + { + get { return (VerticalAlignment)GetValue(VerticalTitleAlignmentProperty); } + set { SetValue(VerticalTitleAlignmentProperty, value); } + } + + public static readonly DependencyProperty CountProperty = DependencyProperty.Register(nameof(Count), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Count + { + get { return (string)GetValue(CountProperty); } + set { SetValue(CountProperty, value); } + } + + public static readonly DependencyProperty TiltFactorProperty = DependencyProperty.Register(nameof(TiltFactor), typeof(int), typeof(Tile), new PropertyMetadata(5)); + + public int TiltFactor + { + get { return (Int32)GetValue(TiltFactorProperty); } + set { SetValue(TiltFactorProperty, value); } + } + + public static readonly DependencyProperty TitleFontSizeProperty = DependencyProperty.Register(nameof(TitleFontSize), typeof(double), typeof(Tile), new PropertyMetadata(12d)); + + public double TitleFontSize + { + get { return (double)GetValue(TitleFontSizeProperty); } + set { SetValue(TitleFontSizeProperty, value); } + } + + public static readonly DependencyProperty CountFontSizeProperty = DependencyProperty.Register(nameof(CountFontSize), typeof(double), typeof(Tile), new PropertyMetadata(28d)); + + public double CountFontSize + { + get { return (double)GetValue(CountFontSizeProperty); } + set { SetValue(CountFontSizeProperty, value); } + } + public Tile() + { + this.DefaultStyleKey = typeof(Tile); + } + } +} diff --git a/UWPMasonry/UWPMasonry.csproj b/UWPMasonry/UWPMasonry.csproj index f15de72..c35391c 100644 --- a/UWPMasonry/UWPMasonry.csproj +++ b/UWPMasonry/UWPMasonry.csproj @@ -120,8 +120,9 @@ PackageReference - + + diff --git a/UWPSample/MainPage.xaml b/UWPSample/MainPage.xaml index b829b86..052e76f 100644 --- a/UWPSample/MainPage.xaml +++ b/UWPSample/MainPage.xaml @@ -12,19 +12,25 @@ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - - - @@ -32,70 +38,72 @@ - - + + - - + + Style="{StaticResource LargeTileStyle}" HorizontalTitleAlignment="Right"> - - + - - + - - + + Style="{StaticResource LargeTileStyle}" HorizontalTitleAlignment="Right"> - - + - - + - - + + - - + + From be254ef73f50f36c98ef2d074794f47de30e37f6 Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Wed, 3 Mar 2021 17:00:54 +0000 Subject: [PATCH 19/26] Added xaml masonry project with uwp and winui support --- Masonry.sln | 22 +++++++ XamlMasonry/Tile.uwp.cs | 103 +++++++++++++++++++++++++++++++++ XamlMasonry/Tile.winui.cs | 98 +++++++++++++++++++++++++++++++ XamlMasonry/XamlMasonry.csproj | 37 ++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 XamlMasonry/Tile.uwp.cs create mode 100644 XamlMasonry/Tile.winui.cs create mode 100644 XamlMasonry/XamlMasonry.csproj diff --git a/Masonry.sln b/Masonry.sln index a5b3165..f00ae67 100644 --- a/Masonry.sln +++ b/Masonry.sln @@ -14,6 +14,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPSample", "UWPSample\UWPS EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPMasonry", "UWPMasonry\UWPMasonry.csproj", "{CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlMasonry", "XamlMasonry\XamlMasonry.csproj", "{A9E8ED59-D96B-4A1D-93EE-29015884F05A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -116,6 +118,26 @@ Global {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x64.Build.0 = Release|x64 {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x86.ActiveCfg = Release|x86 {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x86.Build.0 = Release|x86 + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM.Build.0 = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM64.Build.0 = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x64.ActiveCfg = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x64.Build.0 = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x86.Build.0 = Debug|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|Any CPU.Build.0 = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM.ActiveCfg = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM.Build.0 = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM64.ActiveCfg = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM64.Build.0 = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x64.ActiveCfg = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x64.Build.0 = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x86.ActiveCfg = Release|Any CPU + {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XamlMasonry/Tile.uwp.cs b/XamlMasonry/Tile.uwp.cs new file mode 100644 index 0000000..c0d185f --- /dev/null +++ b/XamlMasonry/Tile.uwp.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Documents; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; + +namespace XamlMasonry +{ + public sealed class Tile : Button + { + public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Title + { + get { return (string)GetValue(TitleProperty); } + set { SetValue(TitleProperty, value); } + } + + /// + /// HorizontalTitleAlignment Dependency Property. + /// Default Value: HorizontalAlignment.Left + /// + public static readonly DependencyProperty HorizontalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(HorizontalTitleAlignment), + typeof(HorizontalAlignment), + typeof(Tile), + new PropertyMetadata(HorizontalAlignment.Left)); + + /// + /// Gets/Sets the horizontal alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public HorizontalAlignment HorizontalTitleAlignment + { + get { return (HorizontalAlignment)GetValue(HorizontalTitleAlignmentProperty); } + set { SetValue(HorizontalTitleAlignmentProperty, value); } + } + + /// + /// VerticalTitleAlignment Dependency Property. + /// Default Value: VerticalAlignment.Bottom + /// + public static readonly DependencyProperty VerticalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(VerticalTitleAlignment), + typeof(VerticalAlignment), + typeof(Tile), + new PropertyMetadata(VerticalAlignment.Bottom)); + + /// + /// Gets/Sets the vertical alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public VerticalAlignment VerticalTitleAlignment + { + get { return (VerticalAlignment)GetValue(VerticalTitleAlignmentProperty); } + set { SetValue(VerticalTitleAlignmentProperty, value); } + } + + public static readonly DependencyProperty CountProperty = DependencyProperty.Register(nameof(Count), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Count + { + get { return (string)GetValue(CountProperty); } + set { SetValue(CountProperty, value); } + } + + public static readonly DependencyProperty TiltFactorProperty = DependencyProperty.Register(nameof(TiltFactor), typeof(int), typeof(Tile), new PropertyMetadata(5)); + + public int TiltFactor + { + get { return (Int32)GetValue(TiltFactorProperty); } + set { SetValue(TiltFactorProperty, value); } + } + + public static readonly DependencyProperty TitleFontSizeProperty = DependencyProperty.Register(nameof(TitleFontSize), typeof(double), typeof(Tile), new PropertyMetadata(12d)); + + public double TitleFontSize + { + get { return (double)GetValue(TitleFontSizeProperty); } + set { SetValue(TitleFontSizeProperty, value); } + } + + public static readonly DependencyProperty CountFontSizeProperty = DependencyProperty.Register(nameof(CountFontSize), typeof(double), typeof(Tile), new PropertyMetadata(28d)); + + public double CountFontSize + { + get { return (double)GetValue(CountFontSizeProperty); } + set { SetValue(CountFontSizeProperty, value); } + } + public Tile() + { + this.DefaultStyleKey = typeof(Tile); + } + } +} diff --git a/XamlMasonry/Tile.winui.cs b/XamlMasonry/Tile.winui.cs new file mode 100644 index 0000000..b923623 --- /dev/null +++ b/XamlMasonry/Tile.winui.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; + +namespace XamlMasonry +{ + public sealed class Tile : Button + { + public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Title + { + get { return (string)GetValue(TitleProperty); } + set { SetValue(TitleProperty, value); } + } + + /// + /// HorizontalTitleAlignment Dependency Property. + /// Default Value: HorizontalAlignment.Left + /// + public static readonly DependencyProperty HorizontalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(HorizontalTitleAlignment), + typeof(HorizontalAlignment), + typeof(Tile), + new PropertyMetadata(HorizontalAlignment.Left)); + + /// + /// Gets/Sets the horizontal alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public HorizontalAlignment HorizontalTitleAlignment + { + get { return (HorizontalAlignment)GetValue(HorizontalTitleAlignmentProperty); } + set { SetValue(HorizontalTitleAlignmentProperty, value); } + } + + /// + /// VerticalTitleAlignment Dependency Property. + /// Default Value: VerticalAlignment.Bottom + /// + public static readonly DependencyProperty VerticalTitleAlignmentProperty = + DependencyProperty.Register( + nameof(VerticalTitleAlignment), + typeof(VerticalAlignment), + typeof(Tile), + new PropertyMetadata(VerticalAlignment.Bottom)); + + /// + /// Gets/Sets the vertical alignment of the title. + /// + [System.ComponentModel.Bindable(true), Category("Layout")] + public VerticalAlignment VerticalTitleAlignment + { + get { return (VerticalAlignment)GetValue(VerticalTitleAlignmentProperty); } + set { SetValue(VerticalTitleAlignmentProperty, value); } + } + + public static readonly DependencyProperty CountProperty = DependencyProperty.Register(nameof(Count), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); + + public string Count + { + get { return (string)GetValue(CountProperty); } + set { SetValue(CountProperty, value); } + } + + public static readonly DependencyProperty TiltFactorProperty = DependencyProperty.Register(nameof(TiltFactor), typeof(int), typeof(Tile), new PropertyMetadata(5)); + + public int TiltFactor + { + get { return (Int32)GetValue(TiltFactorProperty); } + set { SetValue(TiltFactorProperty, value); } + } + + public static readonly DependencyProperty TitleFontSizeProperty = DependencyProperty.Register(nameof(TitleFontSize), typeof(double), typeof(Tile), new PropertyMetadata(12d)); + + public double TitleFontSize + { + get { return (double)GetValue(TitleFontSizeProperty); } + set { SetValue(TitleFontSizeProperty, value); } + } + + public static readonly DependencyProperty CountFontSizeProperty = DependencyProperty.Register(nameof(CountFontSize), typeof(double), typeof(Tile), new PropertyMetadata(28d)); + + public double CountFontSize + { + get { return (double)GetValue(CountFontSizeProperty); } + set { SetValue(CountFontSizeProperty, value); } + } + public Tile() + { + this.DefaultStyleKey = typeof(Tile); + } + } +} diff --git a/XamlMasonry/XamlMasonry.csproj b/XamlMasonry/XamlMasonry.csproj new file mode 100644 index 0000000..8e26476 --- /dev/null +++ b/XamlMasonry/XamlMasonry.csproj @@ -0,0 +1,37 @@ + + + + uap10.0.18362;net5.0-windows10.0.18362.0 + XamlMasonry + XamlMasonry + $(AssemblyName) ($(TargetFramework)) + false + Debug;Release + + + + 10.0.17134.0 + win10-x86;win10-x64;win10-arm64;win10-arm + + + + + + + + + + + + + + + + + + + + + + + From f1f480e5f6a7b45e99cfaceae906e2fd28654da0 Mon Sep 17 00:00:00 2001 From: Dave Humphreys Date: Sun, 7 Mar 2021 18:27:43 +0000 Subject: [PATCH 20/26] added masonry control and and generic.xaml --- XamlMasonry/MasonryControl.uwp.cs | 355 ++++++++++++++++++++++++++++ XamlMasonry/MasonryControl.winui.cs | 354 +++++++++++++++++++++++++++ XamlMasonry/Themes/Generic.xaml | 67 ++++++ XamlMasonry/XamlMasonry.csproj | 20 +- 4 files changed, 794 insertions(+), 2 deletions(-) create mode 100644 XamlMasonry/MasonryControl.uwp.cs create mode 100644 XamlMasonry/MasonryControl.winui.cs create mode 100644 XamlMasonry/Themes/Generic.xaml diff --git a/XamlMasonry/MasonryControl.uwp.cs b/XamlMasonry/MasonryControl.uwp.cs new file mode 100644 index 0000000..3785cd8 --- /dev/null +++ b/XamlMasonry/MasonryControl.uwp.cs @@ -0,0 +1,355 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Windows.Foundation; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + + +namespace XamlMasonry +{ + public class MasonryControl : ItemsControl + { + #region Static Fields + + /// + /// The spacing property + /// + public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register(nameof(Spacing), typeof(int), typeof(MasonryControl), null); + + + #endregion + + #region Public Properties + + /// + /// Gets or sets the spacing. + /// + /// + /// The spacing. + /// + public int Spacing + { + get + { + return (int)this.GetValue(SpacingProperty); + } + set + { + this.SetValue(SpacingProperty, value); + } + } + + #endregion + + #region Public Methods and Operators + + /// + /// Updates this instance. + /// + public virtual void Update() + { + var matrix = new List { new[] { 0, (int)this.ActualWidth, 0 } }; + var hMax = 0; + foreach (var child in this.Items) + { + var element = child as FrameworkElement; + if (element != null) + { + var size = new[] + { (int)element.ActualWidth + this.Spacing, (int)element.ActualHeight + this.Spacing }; + var point = this.GetAttachPoint(matrix, size[0]); + matrix = this.UpdateAttachArea(matrix, point, size); + hMax = Math.Max(hMax, point[1] + size[1]); + this.UpdateAlignment(element); + var oldThickness = element.Margin; + if (Math.Abs(oldThickness.Left - point[0]) > 1 || Math.Abs(oldThickness.Top - point[1]) > 1) + { + this.SetPosition(element, point[1], point[0]); + } + } + } + } + + #endregion + + public MasonryControl() + { + this.DefaultStyleKey = typeof(MasonryControl); + + + } + + #region Methods + + /// + /// Adds the specified object as the child of the object. + /// + /// The object to add as a child. + /// Child has to derive from FrameworkElement. + protected void AddChild(object value) + { + if (!(value is FrameworkElement)) + { + throw new InvalidDataException("Child has to derive from FrameworkElement."); + } + + this.Items.Add(value); + } + + /// + /// Handles the child desired size changed. + /// + /// The child. + protected virtual void HandleChildDesiredSizeChanged(UIElement child) + { + this.HandleUpdate(child as FrameworkElement); + } + + + + /// + /// Handles the update. + /// + /// The element. + protected void HandleUpdate(FrameworkElement element) + { + if (element != null) + { + if (element.IsLoaded) + { + this.Update(); + } + else + { + element.Loaded += delegate { this.Update(); }; + } + } + } + + + protected override void OnItemsChanged(object e) + { + base.OnItemsChanged(e); + + if (Items != null) + { + foreach (var child in Items) + { + this.HandleUpdate(child as FrameworkElement); + } + } + } + + + + + protected override Size ArrangeOverride(Size finalSize) + { + this.Update(); + + return base.ArrangeOverride(finalSize); + } + + protected override void OnBringIntoViewRequested(BringIntoViewRequestedEventArgs e) + { + this.Update(); + + base.OnBringIntoViewRequested(e); + } + + protected override void PrepareContainerForItemOverride(DependencyObject element, object item) + { + this.Update(); + + base.PrepareContainerForItemOverride(element, item); + } + + protected override Size MeasureOverride(Size availableSize) + { + this.Update(); + + return base.MeasureOverride(availableSize); + } + + + ///// + ///// Raises the event, using the specified information as + ///// part of the eventual event data. + ///// + ///// Details of the old and new size involved in the change. + //protected override void OnRenderSizeChanged(Size sizeInfo) + //{ + // base.OnRenderSizeChanged(sizeInfo); + // this.HandleRenderSizeChanged(sizeInfo); + //} + + ///// + ///// Supports layout behavior when a child element is resized. + ///// + ///// The child element that is being resized. + //protected override void OnChildDesiredSizeChanged(UIElement child) + //{ + // base.OnChildDesiredSizeChanged(child); + // this.HandleChildDesiredSizeChanged(child); + //} + + /// + /// Sets the position. + /// + /// The element. + /// The new top. + /// The new left. + protected virtual void SetPosition(FrameworkElement element, int newTop, int newLeft) + { + if (element != null) + { + element.Margin = new Thickness(newLeft, newTop, 0, 0); + } + } + + /// + /// Updates the alignment. + /// + /// The element. + protected virtual void UpdateAlignment(FrameworkElement element) + { + if (element != null) + { + element.HorizontalAlignment = HorizontalAlignment.Left; + element.VerticalAlignment = VerticalAlignment.Top; + } + } + + /// + /// Gets the attach point. + /// + /// The MTX. + /// The width. + /// + private int[] GetAttachPoint(List mtx, int width) + { + mtx.Sort(this.MatrixSortDepth); + var max = mtx[mtx.Count - 1][2]; + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtx[i][2] >= max) + { + break; + } + if (mtx[i][1] - mtx[i][0] >= width) + { + return new[] { mtx[i][0], mtx[i][2] }; + } + } + return new[] { 0, max }; + } + + /// + /// Matrixes the join. + /// + /// The MTX. + /// The cell. + /// + private List MatrixJoin(List mtx, int[] cell) + { + mtx.Add(cell); + mtx.Sort(this.MatrixSortX); + var mtxJoin = new List(); + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtxJoin.Count > 0 && mtxJoin[mtxJoin.Count - 1][1] == mtx[i][0] + && mtxJoin[mtxJoin.Count - 1][2] == mtx[i][2]) + { + mtxJoin[mtxJoin.Count - 1][1] = mtx[i][1]; + } + else + { + mtxJoin.Add(mtx[i]); + } + } + return mtxJoin; + } + + /// + /// Matrixes the sort depth. + /// + /// a. + /// The b. + /// + private int MatrixSortDepth(int[] a, int[] b) + { + return (a[2] == b[2] && a[0] > b[0]) || a[2] > b[2] ? 1 : -1; + } + + /// + /// Matrixes the sort x. + /// + /// a. + /// The b. + /// + private int MatrixSortX(int[] a, int[] b) + { + return a[0] > b[0] ? 1 : -1; + } + + /// + /// Matrixes the width of the trim. + /// + /// a. + /// The b. + /// + private int[] MatrixTrimWidth(int[] a, int[] b) + { + if (a[0] >= b[0] && a[0] < b[1] || a[1] >= b[0] && a[1] < b[1]) + { + if (a[0] >= b[0] && a[0] < b[1]) + { + a[0] = b[1]; + } + else + { + a[1] = b[0]; + } + } + return a; + } + + /// + /// Updates the attach area. + /// + /// The MTX. + /// The point. + /// The size. + /// + private List UpdateAttachArea(List mtx, int[] point, int[] size) + { + mtx.Sort(this.MatrixSortDepth); + int[] cell = { point[0], point[0] + size[0], point[1] + size[1] }; + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtx.Count - 1 >= i) + { + if (cell[0] <= mtx[i][0] && mtx[i][1] <= cell[1]) + { + mtx.RemoveAt(i); + } + else + { + mtx[i] = this.MatrixTrimWidth(mtx[i], cell); + } + } + } + return this.MatrixJoin(mtx, cell); + } + + #endregion + + protected override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + Update(); + } + } +} diff --git a/XamlMasonry/MasonryControl.winui.cs b/XamlMasonry/MasonryControl.winui.cs new file mode 100644 index 0000000..ba917e7 --- /dev/null +++ b/XamlMasonry/MasonryControl.winui.cs @@ -0,0 +1,354 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Windows.Foundation; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; + +namespace XamlMasonry +{ + public class MasonryControl : ItemsControl + { + #region Static Fields + + /// + /// The spacing property + /// + public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register(nameof(Spacing), typeof(int), typeof(MasonryControl), null); + + + #endregion + + #region Public Properties + + /// + /// Gets or sets the spacing. + /// + /// + /// The spacing. + /// + public int Spacing + { + get + { + return (int)this.GetValue(SpacingProperty); + } + set + { + this.SetValue(SpacingProperty, value); + } + } + + #endregion + + #region Public Methods and Operators + + /// + /// Updates this instance. + /// + public virtual void Update() + { + var matrix = new List { new[] { 0, (int)this.ActualWidth, 0 } }; + var hMax = 0; + foreach (var child in this.Items) + { + var element = child as FrameworkElement; + if (element != null) + { + var size = new[] + { (int)element.ActualWidth + this.Spacing, (int)element.ActualHeight + this.Spacing }; + var point = this.GetAttachPoint(matrix, size[0]); + matrix = this.UpdateAttachArea(matrix, point, size); + hMax = Math.Max(hMax, point[1] + size[1]); + this.UpdateAlignment(element); + var oldThickness = element.Margin; + if (Math.Abs(oldThickness.Left - point[0]) > 1 || Math.Abs(oldThickness.Top - point[1]) > 1) + { + this.SetPosition(element, point[1], point[0]); + } + } + } + } + + #endregion + + public MasonryControl() + { + this.DefaultStyleKey = typeof(MasonryControl); + + + } + + #region Methods + + /// + /// Adds the specified object as the child of the object. + /// + /// The object to add as a child. + /// Child has to derive from FrameworkElement. + protected void AddChild(object value) + { + if (!(value is FrameworkElement)) + { + throw new InvalidDataException("Child has to derive from FrameworkElement."); + } + + this.Items.Add(value); + } + + /// + /// Handles the child desired size changed. + /// + /// The child. + protected virtual void HandleChildDesiredSizeChanged(UIElement child) + { + this.HandleUpdate(child as FrameworkElement); + } + + + + /// + /// Handles the update. + /// + /// The element. + protected void HandleUpdate(FrameworkElement element) + { + if (element != null) + { + if (element.IsLoaded) + { + this.Update(); + } + else + { + element.Loaded += delegate { this.Update(); }; + } + } + } + + + protected override void OnItemsChanged(object e) + { + base.OnItemsChanged(e); + + if (Items != null) + { + foreach (var child in Items) + { + this.HandleUpdate(child as FrameworkElement); + } + } + } + + + + + protected override Size ArrangeOverride(Size finalSize) + { + this.Update(); + + return base.ArrangeOverride(finalSize); + } + + protected override void OnBringIntoViewRequested(BringIntoViewRequestedEventArgs e) + { + this.Update(); + + base.OnBringIntoViewRequested(e); + } + + protected override void PrepareContainerForItemOverride(DependencyObject element, object item) + { + this.Update(); + + base.PrepareContainerForItemOverride(element, item); + } + + protected override Size MeasureOverride(Size availableSize) + { + this.Update(); + + return base.MeasureOverride(availableSize); + } + + + ///// + ///// Raises the event, using the specified information as + ///// part of the eventual event data. + ///// + ///// Details of the old and new size involved in the change. + //protected override void OnRenderSizeChanged(Size sizeInfo) + //{ + // base.OnRenderSizeChanged(sizeInfo); + // this.HandleRenderSizeChanged(sizeInfo); + //} + + ///// + ///// Supports layout behavior when a child element is resized. + ///// + ///// The child element that is being resized. + //protected override void OnChildDesiredSizeChanged(UIElement child) + //{ + // base.OnChildDesiredSizeChanged(child); + // this.HandleChildDesiredSizeChanged(child); + //} + + /// + /// Sets the position. + /// + /// The element. + /// The new top. + /// The new left. + protected virtual void SetPosition(FrameworkElement element, int newTop, int newLeft) + { + if (element != null) + { + element.Margin = new Thickness(newLeft, newTop, 0, 0); + } + } + + /// + /// Updates the alignment. + /// + /// The element. + protected virtual void UpdateAlignment(FrameworkElement element) + { + if (element != null) + { + element.HorizontalAlignment = HorizontalAlignment.Left; + element.VerticalAlignment = VerticalAlignment.Top; + } + } + + /// + /// Gets the attach point. + /// + /// The MTX. + /// The width. + /// + private int[] GetAttachPoint(List mtx, int width) + { + mtx.Sort(this.MatrixSortDepth); + var max = mtx[mtx.Count - 1][2]; + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtx[i][2] >= max) + { + break; + } + if (mtx[i][1] - mtx[i][0] >= width) + { + return new[] { mtx[i][0], mtx[i][2] }; + } + } + return new[] { 0, max }; + } + + /// + /// Matrixes the join. + /// + /// The MTX. + /// The cell. + /// + private List MatrixJoin(List mtx, int[] cell) + { + mtx.Add(cell); + mtx.Sort(this.MatrixSortX); + var mtxJoin = new List(); + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtxJoin.Count > 0 && mtxJoin[mtxJoin.Count - 1][1] == mtx[i][0] + && mtxJoin[mtxJoin.Count - 1][2] == mtx[i][2]) + { + mtxJoin[mtxJoin.Count - 1][1] = mtx[i][1]; + } + else + { + mtxJoin.Add(mtx[i]); + } + } + return mtxJoin; + } + + /// + /// Matrixes the sort depth. + /// + /// a. + /// The b. + /// + private int MatrixSortDepth(int[] a, int[] b) + { + return (a[2] == b[2] && a[0] > b[0]) || a[2] > b[2] ? 1 : -1; + } + + /// + /// Matrixes the sort x. + /// + /// a. + /// The b. + /// + private int MatrixSortX(int[] a, int[] b) + { + return a[0] > b[0] ? 1 : -1; + } + + /// + /// Matrixes the width of the trim. + /// + /// a. + /// The b. + /// + private int[] MatrixTrimWidth(int[] a, int[] b) + { + if (a[0] >= b[0] && a[0] < b[1] || a[1] >= b[0] && a[1] < b[1]) + { + if (a[0] >= b[0] && a[0] < b[1]) + { + a[0] = b[1]; + } + else + { + a[1] = b[0]; + } + } + return a; + } + + /// + /// Updates the attach area. + /// + /// The MTX. + /// The point. + /// The size. + /// + private List UpdateAttachArea(List mtx, int[] point, int[] size) + { + mtx.Sort(this.MatrixSortDepth); + int[] cell = { point[0], point[0] + size[0], point[1] + size[1] }; + for (int i = 0, length = mtx.Count; i < length; i++) + { + if (mtx.Count - 1 >= i) + { + if (cell[0] <= mtx[i][0] && mtx[i][1] <= cell[1]) + { + mtx.RemoveAt(i); + } + else + { + mtx[i] = this.MatrixTrimWidth(mtx[i], cell); + } + } + } + return this.MatrixJoin(mtx, cell); + } + + #endregion + + protected override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + Update(); + } + } +} diff --git a/XamlMasonry/Themes/Generic.xaml b/XamlMasonry/Themes/Generic.xaml new file mode 100644 index 0000000..a996594 --- /dev/null +++ b/XamlMasonry/Themes/Generic.xaml @@ -0,0 +1,67 @@ + + + + + + + diff --git a/XamlMasonry/XamlMasonry.csproj b/XamlMasonry/XamlMasonry.csproj index 8e26476..8edaad9 100644 --- a/XamlMasonry/XamlMasonry.csproj +++ b/XamlMasonry/XamlMasonry.csproj @@ -1,12 +1,14 @@  - uap10.0.18362;net5.0-windows10.0.18362.0 + uap10.0.18362;net5.0-windows10.0.18362 XamlMasonry XamlMasonry $(AssemblyName) ($(TargetFramework)) false Debug;Release + false + true @@ -24,6 +26,11 @@ + + + Designer + MSBuild:Compile + @@ -32,6 +39,15 @@ + + Designer + MSBuild:Compile + + - + + + + +
From 9d5525939791b5ad3fc08688b3722831807353c8 Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Mon, 20 May 2024 19:16:56 +0100 Subject: [PATCH 21/26] Update to new versions of .net --- Masonry.sln | 6 +- Masonry/Masonry.csproj | 47 ++-- XamlMasonry/MasonryControl.uwp.cs | 355 ------------------------------ XamlMasonry/Tile.uwp.cs | 103 --------- XamlMasonry/XamlMasonry.csproj | 64 ++---- 5 files changed, 40 insertions(+), 535 deletions(-) delete mode 100644 XamlMasonry/MasonryControl.uwp.cs delete mode 100644 XamlMasonry/Tile.uwp.cs diff --git a/Masonry.sln b/Masonry.sln index f00ae67..6e2a08a 100644 --- a/Masonry.sln +++ b/Masonry.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34902.65 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masonry", "Masonry\Masonry.csproj", "{E2BA75BF-C535-46B9-A180-E10533A1C1D1}" EndProject @@ -14,7 +14,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPSample", "UWPSample\UWPS EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPMasonry", "UWPMasonry\UWPMasonry.csproj", "{CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlMasonry", "XamlMasonry\XamlMasonry.csproj", "{A9E8ED59-D96B-4A1D-93EE-29015884F05A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamlMasonry", "XamlMasonry\XamlMasonry.csproj", "{A9E8ED59-D96B-4A1D-93EE-29015884F05A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index 3ef329d..47ef244 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -1,24 +1,25 @@ - - - net461;netcoreapp3.0 - true - true - true - true - wpfmasonry - WPF Masonry - Masonry - $(AssemblyName) ($(TargetFramework)) - Lizzaran newky2k - MIT - 2.0 - Fluid layout grid for WPF (Net Core 3.x and .Net Framework) - https://github.com/newky2k/WPF-Masonry - https://github.com/newky2k/WPF-Masonry - Git - WPF Masonry Fluid - Updated to work with Net Core - - Copyright 2013 - 2016 Nikita Bernthaler - + + + net461;net8-windows + true + true + true + true + wpfmasonry + WPF Masonry + Masonry + $(AssemblyName) ($(TargetFramework)) + Lizzaran newky2k + MIT + 2.1 + Fluid layout grid for WPF (Net Core 3.x and .Net Framework) + https://github.com/newky2k/WPF-Masonry + https://github.com/newky2k/WPF-Masonry + Git + WPF Masonry Fluid + + Updated to work with Net Core + + Copyright 2013 - 2016 Nikita Bernthaler + \ No newline at end of file diff --git a/XamlMasonry/MasonryControl.uwp.cs b/XamlMasonry/MasonryControl.uwp.cs deleted file mode 100644 index 3785cd8..0000000 --- a/XamlMasonry/MasonryControl.uwp.cs +++ /dev/null @@ -1,355 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Windows.Foundation; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; - - -namespace XamlMasonry -{ - public class MasonryControl : ItemsControl - { - #region Static Fields - - /// - /// The spacing property - /// - public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register(nameof(Spacing), typeof(int), typeof(MasonryControl), null); - - - #endregion - - #region Public Properties - - /// - /// Gets or sets the spacing. - /// - /// - /// The spacing. - /// - public int Spacing - { - get - { - return (int)this.GetValue(SpacingProperty); - } - set - { - this.SetValue(SpacingProperty, value); - } - } - - #endregion - - #region Public Methods and Operators - - /// - /// Updates this instance. - /// - public virtual void Update() - { - var matrix = new List { new[] { 0, (int)this.ActualWidth, 0 } }; - var hMax = 0; - foreach (var child in this.Items) - { - var element = child as FrameworkElement; - if (element != null) - { - var size = new[] - { (int)element.ActualWidth + this.Spacing, (int)element.ActualHeight + this.Spacing }; - var point = this.GetAttachPoint(matrix, size[0]); - matrix = this.UpdateAttachArea(matrix, point, size); - hMax = Math.Max(hMax, point[1] + size[1]); - this.UpdateAlignment(element); - var oldThickness = element.Margin; - if (Math.Abs(oldThickness.Left - point[0]) > 1 || Math.Abs(oldThickness.Top - point[1]) > 1) - { - this.SetPosition(element, point[1], point[0]); - } - } - } - } - - #endregion - - public MasonryControl() - { - this.DefaultStyleKey = typeof(MasonryControl); - - - } - - #region Methods - - /// - /// Adds the specified object as the child of the object. - /// - /// The object to add as a child. - /// Child has to derive from FrameworkElement. - protected void AddChild(object value) - { - if (!(value is FrameworkElement)) - { - throw new InvalidDataException("Child has to derive from FrameworkElement."); - } - - this.Items.Add(value); - } - - /// - /// Handles the child desired size changed. - /// - /// The child. - protected virtual void HandleChildDesiredSizeChanged(UIElement child) - { - this.HandleUpdate(child as FrameworkElement); - } - - - - /// - /// Handles the update. - /// - /// The element. - protected void HandleUpdate(FrameworkElement element) - { - if (element != null) - { - if (element.IsLoaded) - { - this.Update(); - } - else - { - element.Loaded += delegate { this.Update(); }; - } - } - } - - - protected override void OnItemsChanged(object e) - { - base.OnItemsChanged(e); - - if (Items != null) - { - foreach (var child in Items) - { - this.HandleUpdate(child as FrameworkElement); - } - } - } - - - - - protected override Size ArrangeOverride(Size finalSize) - { - this.Update(); - - return base.ArrangeOverride(finalSize); - } - - protected override void OnBringIntoViewRequested(BringIntoViewRequestedEventArgs e) - { - this.Update(); - - base.OnBringIntoViewRequested(e); - } - - protected override void PrepareContainerForItemOverride(DependencyObject element, object item) - { - this.Update(); - - base.PrepareContainerForItemOverride(element, item); - } - - protected override Size MeasureOverride(Size availableSize) - { - this.Update(); - - return base.MeasureOverride(availableSize); - } - - - ///// - ///// Raises the event, using the specified information as - ///// part of the eventual event data. - ///// - ///// Details of the old and new size involved in the change. - //protected override void OnRenderSizeChanged(Size sizeInfo) - //{ - // base.OnRenderSizeChanged(sizeInfo); - // this.HandleRenderSizeChanged(sizeInfo); - //} - - ///// - ///// Supports layout behavior when a child element is resized. - ///// - ///// The child element that is being resized. - //protected override void OnChildDesiredSizeChanged(UIElement child) - //{ - // base.OnChildDesiredSizeChanged(child); - // this.HandleChildDesiredSizeChanged(child); - //} - - /// - /// Sets the position. - /// - /// The element. - /// The new top. - /// The new left. - protected virtual void SetPosition(FrameworkElement element, int newTop, int newLeft) - { - if (element != null) - { - element.Margin = new Thickness(newLeft, newTop, 0, 0); - } - } - - /// - /// Updates the alignment. - /// - /// The element. - protected virtual void UpdateAlignment(FrameworkElement element) - { - if (element != null) - { - element.HorizontalAlignment = HorizontalAlignment.Left; - element.VerticalAlignment = VerticalAlignment.Top; - } - } - - /// - /// Gets the attach point. - /// - /// The MTX. - /// The width. - /// - private int[] GetAttachPoint(List mtx, int width) - { - mtx.Sort(this.MatrixSortDepth); - var max = mtx[mtx.Count - 1][2]; - for (int i = 0, length = mtx.Count; i < length; i++) - { - if (mtx[i][2] >= max) - { - break; - } - if (mtx[i][1] - mtx[i][0] >= width) - { - return new[] { mtx[i][0], mtx[i][2] }; - } - } - return new[] { 0, max }; - } - - /// - /// Matrixes the join. - /// - /// The MTX. - /// The cell. - /// - private List MatrixJoin(List mtx, int[] cell) - { - mtx.Add(cell); - mtx.Sort(this.MatrixSortX); - var mtxJoin = new List(); - for (int i = 0, length = mtx.Count; i < length; i++) - { - if (mtxJoin.Count > 0 && mtxJoin[mtxJoin.Count - 1][1] == mtx[i][0] - && mtxJoin[mtxJoin.Count - 1][2] == mtx[i][2]) - { - mtxJoin[mtxJoin.Count - 1][1] = mtx[i][1]; - } - else - { - mtxJoin.Add(mtx[i]); - } - } - return mtxJoin; - } - - /// - /// Matrixes the sort depth. - /// - /// a. - /// The b. - /// - private int MatrixSortDepth(int[] a, int[] b) - { - return (a[2] == b[2] && a[0] > b[0]) || a[2] > b[2] ? 1 : -1; - } - - /// - /// Matrixes the sort x. - /// - /// a. - /// The b. - /// - private int MatrixSortX(int[] a, int[] b) - { - return a[0] > b[0] ? 1 : -1; - } - - /// - /// Matrixes the width of the trim. - /// - /// a. - /// The b. - /// - private int[] MatrixTrimWidth(int[] a, int[] b) - { - if (a[0] >= b[0] && a[0] < b[1] || a[1] >= b[0] && a[1] < b[1]) - { - if (a[0] >= b[0] && a[0] < b[1]) - { - a[0] = b[1]; - } - else - { - a[1] = b[0]; - } - } - return a; - } - - /// - /// Updates the attach area. - /// - /// The MTX. - /// The point. - /// The size. - /// - private List UpdateAttachArea(List mtx, int[] point, int[] size) - { - mtx.Sort(this.MatrixSortDepth); - int[] cell = { point[0], point[0] + size[0], point[1] + size[1] }; - for (int i = 0, length = mtx.Count; i < length; i++) - { - if (mtx.Count - 1 >= i) - { - if (cell[0] <= mtx[i][0] && mtx[i][1] <= cell[1]) - { - mtx.RemoveAt(i); - } - else - { - mtx[i] = this.MatrixTrimWidth(mtx[i], cell); - } - } - } - return this.MatrixJoin(mtx, cell); - } - - #endregion - - protected override void OnApplyTemplate() - { - base.OnApplyTemplate(); - - Update(); - } - } -} diff --git a/XamlMasonry/Tile.uwp.cs b/XamlMasonry/Tile.uwp.cs deleted file mode 100644 index c0d185f..0000000 --- a/XamlMasonry/Tile.uwp.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Documents; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; - -namespace XamlMasonry -{ - public sealed class Tile : Button - { - public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); - - public string Title - { - get { return (string)GetValue(TitleProperty); } - set { SetValue(TitleProperty, value); } - } - - /// - /// HorizontalTitleAlignment Dependency Property. - /// Default Value: HorizontalAlignment.Left - /// - public static readonly DependencyProperty HorizontalTitleAlignmentProperty = - DependencyProperty.Register( - nameof(HorizontalTitleAlignment), - typeof(HorizontalAlignment), - typeof(Tile), - new PropertyMetadata(HorizontalAlignment.Left)); - - /// - /// Gets/Sets the horizontal alignment of the title. - /// - [System.ComponentModel.Bindable(true), Category("Layout")] - public HorizontalAlignment HorizontalTitleAlignment - { - get { return (HorizontalAlignment)GetValue(HorizontalTitleAlignmentProperty); } - set { SetValue(HorizontalTitleAlignmentProperty, value); } - } - - /// - /// VerticalTitleAlignment Dependency Property. - /// Default Value: VerticalAlignment.Bottom - /// - public static readonly DependencyProperty VerticalTitleAlignmentProperty = - DependencyProperty.Register( - nameof(VerticalTitleAlignment), - typeof(VerticalAlignment), - typeof(Tile), - new PropertyMetadata(VerticalAlignment.Bottom)); - - /// - /// Gets/Sets the vertical alignment of the title. - /// - [System.ComponentModel.Bindable(true), Category("Layout")] - public VerticalAlignment VerticalTitleAlignment - { - get { return (VerticalAlignment)GetValue(VerticalTitleAlignmentProperty); } - set { SetValue(VerticalTitleAlignmentProperty, value); } - } - - public static readonly DependencyProperty CountProperty = DependencyProperty.Register(nameof(Count), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); - - public string Count - { - get { return (string)GetValue(CountProperty); } - set { SetValue(CountProperty, value); } - } - - public static readonly DependencyProperty TiltFactorProperty = DependencyProperty.Register(nameof(TiltFactor), typeof(int), typeof(Tile), new PropertyMetadata(5)); - - public int TiltFactor - { - get { return (Int32)GetValue(TiltFactorProperty); } - set { SetValue(TiltFactorProperty, value); } - } - - public static readonly DependencyProperty TitleFontSizeProperty = DependencyProperty.Register(nameof(TitleFontSize), typeof(double), typeof(Tile), new PropertyMetadata(12d)); - - public double TitleFontSize - { - get { return (double)GetValue(TitleFontSizeProperty); } - set { SetValue(TitleFontSizeProperty, value); } - } - - public static readonly DependencyProperty CountFontSizeProperty = DependencyProperty.Register(nameof(CountFontSize), typeof(double), typeof(Tile), new PropertyMetadata(28d)); - - public double CountFontSize - { - get { return (double)GetValue(CountFontSizeProperty); } - set { SetValue(CountFontSizeProperty, value); } - } - public Tile() - { - this.DefaultStyleKey = typeof(Tile); - } - } -} diff --git a/XamlMasonry/XamlMasonry.csproj b/XamlMasonry/XamlMasonry.csproj index 8edaad9..d128736 100644 --- a/XamlMasonry/XamlMasonry.csproj +++ b/XamlMasonry/XamlMasonry.csproj @@ -1,53 +1,15 @@ - - - - uap10.0.18362;net5.0-windows10.0.18362 - XamlMasonry - XamlMasonry - $(AssemblyName) ($(TargetFramework)) - false - Debug;Release - false - true - - - - 10.0.17134.0 - win10-x86;win10-x64;win10-arm64;win10-arm - - - - - - - - - - - - - - - Designer - MSBuild:Compile - - - - - - - - - - - Designer - MSBuild:Compile - - - - - - - + + + net6.0-windows10.0.19041.0 + 10.0.17763.0 + MasonryWinUI + win10-x86;win10-x64;win10-arm64 + true + + + + + + From f0a6b4292a9d17bdae52a642b20f8e86a808e927 Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Sun, 2 Jun 2024 20:26:38 +0100 Subject: [PATCH 22/26] Migrated wpf sample to Net 8 and replaced UWP with WinUI support --- Masonry.Example/Masonry.Example.csproj | 135 +------ Masonry.Example/Properties/AssemblyInfo.cs | 23 -- .../Properties/Resources.Designer.cs | 63 --- Masonry.Example/Properties/Resources.resx | 117 ------ .../Properties/Settings.Designer.cs | 26 -- Masonry.Example/Properties/Settings.settings | 8 - Masonry.Example/ViewModels/MainViewModel.cs | 6 +- Masonry.Example/Views/MainView.xaml | 3 +- Masonry.Example/Views/MainView.xaml.cs | 12 + Masonry.Example/packages.config | 7 - Masonry.sln | 172 ++++----- Masonry/Masonry.csproj | 4 +- MasonryWinUI.Example/App.xaml | 16 + MasonryWinUI.Example/App.xaml.cs | 50 +++ .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 432 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 5372 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 1755 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 637 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 283 bytes MasonryWinUI.Example/Assets/StoreLogo.png | Bin 0 -> 456 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 2097 bytes .../Assets/jobs_white.png | Bin .../MainPage.xaml | 73 ++-- MasonryWinUI.Example/MainPage.xaml.cs | 35 ++ MasonryWinUI.Example/MainWindow.xaml | 11 + MasonryWinUI.Example/MainWindow.xaml.cs | 32 ++ .../MasonryWinUI.Example.csproj | 63 +++ .../Package.appxmanifest | 32 +- .../Properties/launchSettings.json | 10 + .../ViewModels/MainViewModel.cs | 12 +- MasonryWinUI.Example/app.manifest | 19 + .../MasonryControl.winui.cs | 2 +- MasonryWinUI/MasonryWinUI.csproj | 16 + .../Themes/Generic.xaml | 2 +- {XamlMasonry => MasonryWinUI}/Tile.winui.cs | 2 +- UWPMasonry/MasonryControl.cs | 364 ------------------ UWPMasonry/Properties/AssemblyInfo.cs | 29 -- UWPMasonry/Properties/UWPMasonry.rd.xml | 33 -- UWPMasonry/Themes/Generic.xaml | 67 ---- UWPMasonry/Tile.cs | 105 ----- UWPMasonry/UWPMasonry.csproj | 150 -------- UWPSample/App.xaml | 7 - UWPSample/App.xaml.cs | 100 ----- UWPSample/Assets/LockScreenLogo.scale-200.png | Bin 1430 -> 0 bytes UWPSample/Assets/SplashScreen.scale-200.png | Bin 7700 -> 0 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 2937 -> 0 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 1647 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 1255 -> 0 bytes UWPSample/Assets/StoreLogo.png | Bin 1451 -> 0 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 3204 -> 0 bytes UWPSample/MainPage.xaml.cs | 31 -- UWPSample/Properties/AssemblyInfo.cs | 29 -- UWPSample/Properties/Default.rd.xml | 31 -- UWPSample/UWPSample.csproj | 182 --------- XamlMasonry/XamlMasonry.csproj | 15 - azure-pipelines-mergetest.yml | 27 +- azure-pipelines-release.yml | 35 +- 57 files changed, 447 insertions(+), 1709 deletions(-) delete mode 100644 Masonry.Example/Properties/Resources.Designer.cs delete mode 100644 Masonry.Example/Properties/Resources.resx delete mode 100644 Masonry.Example/Properties/Settings.Designer.cs delete mode 100644 Masonry.Example/Properties/Settings.settings delete mode 100644 Masonry.Example/packages.config create mode 100644 MasonryWinUI.Example/App.xaml create mode 100644 MasonryWinUI.Example/App.xaml.cs create mode 100644 MasonryWinUI.Example/Assets/LockScreenLogo.scale-200.png create mode 100644 MasonryWinUI.Example/Assets/SplashScreen.scale-200.png create mode 100644 MasonryWinUI.Example/Assets/Square150x150Logo.scale-200.png create mode 100644 MasonryWinUI.Example/Assets/Square44x44Logo.scale-200.png create mode 100644 MasonryWinUI.Example/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 MasonryWinUI.Example/Assets/StoreLogo.png create mode 100644 MasonryWinUI.Example/Assets/Wide310x150Logo.scale-200.png rename {UWPSample => MasonryWinUI.Example}/Assets/jobs_white.png (100%) rename {UWPSample => MasonryWinUI.Example}/MainPage.xaml (59%) create mode 100644 MasonryWinUI.Example/MainPage.xaml.cs create mode 100644 MasonryWinUI.Example/MainWindow.xaml create mode 100644 MasonryWinUI.Example/MainWindow.xaml.cs create mode 100644 MasonryWinUI.Example/MasonryWinUI.Example.csproj rename {UWPSample => MasonryWinUI.Example}/Package.appxmanifest (51%) create mode 100644 MasonryWinUI.Example/Properties/launchSettings.json rename {UWPSample => MasonryWinUI.Example}/ViewModels/MainViewModel.cs (87%) create mode 100644 MasonryWinUI.Example/app.manifest rename {XamlMasonry => MasonryWinUI}/MasonryControl.winui.cs (99%) create mode 100644 MasonryWinUI/MasonryWinUI.csproj rename {XamlMasonry => MasonryWinUI}/Themes/Generic.xaml (98%) rename {XamlMasonry => MasonryWinUI}/Tile.winui.cs (99%) delete mode 100644 UWPMasonry/MasonryControl.cs delete mode 100644 UWPMasonry/Properties/AssemblyInfo.cs delete mode 100644 UWPMasonry/Properties/UWPMasonry.rd.xml delete mode 100644 UWPMasonry/Themes/Generic.xaml delete mode 100644 UWPMasonry/Tile.cs delete mode 100644 UWPMasonry/UWPMasonry.csproj delete mode 100644 UWPSample/App.xaml delete mode 100644 UWPSample/App.xaml.cs delete mode 100644 UWPSample/Assets/LockScreenLogo.scale-200.png delete mode 100644 UWPSample/Assets/SplashScreen.scale-200.png delete mode 100644 UWPSample/Assets/Square150x150Logo.scale-200.png delete mode 100644 UWPSample/Assets/Square44x44Logo.scale-200.png delete mode 100644 UWPSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 UWPSample/Assets/StoreLogo.png delete mode 100644 UWPSample/Assets/Wide310x150Logo.scale-200.png delete mode 100644 UWPSample/MainPage.xaml.cs delete mode 100644 UWPSample/Properties/AssemblyInfo.cs delete mode 100644 UWPSample/Properties/Default.rd.xml delete mode 100644 UWPSample/UWPSample.csproj delete mode 100644 XamlMasonry/XamlMasonry.csproj diff --git a/Masonry.Example/Masonry.Example.csproj b/Masonry.Example/Masonry.Example.csproj index b7ef35e..a2e6fc0 100644 --- a/Masonry.Example/Masonry.Example.csproj +++ b/Masonry.Example/Masonry.Example.csproj @@ -1,130 +1,19 @@ - - - + + - Debug - AnyCPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2} WinExe - Properties - Masonry.Example - Masonry.Example - v4.6.1 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - true - + net8.0-windows + disable + enable + true - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Prism.Core.6.1.0\lib\net45\Prism.dll - True - - - ..\packages\Prism.Wpf.6.1.0\lib\net45\Prism.Wpf.dll - True - - - - - - 4.0 - - - - - - - - MSBuild:Compile - Designer - - - - - - Shell.xaml - - - - MainView.xaml - - - App.xaml - Code - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - - ResXFileCodeGenerator - Resources.Designer.cs - - - default.licenseheader - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - + - + + - - {e2ba75bf-c535-46b9-a180-e10533a1c1d1} - Masonry - + - - - \ No newline at end of file + + diff --git a/Masonry.Example/Properties/AssemblyInfo.cs b/Masonry.Example/Properties/AssemblyInfo.cs index 4d4951d..62edf63 100644 --- a/Masonry.Example/Properties/AssemblyInfo.cs +++ b/Masonry.Example/Properties/AssemblyInfo.cs @@ -28,15 +28,6 @@ You should have received a copy of the GNU General Public License // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Masonry.Example")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Masonry.Example")] -[assembly: AssemblyCopyright("Copyright © 2016 by Nikita Bernthaler")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. @@ -59,17 +50,3 @@ You should have received a copy of the GNU General Public License //(used if a resource is not found in the page, // app, or any theme specific resource dictionaries) )] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Masonry.Example/Properties/Resources.Designer.cs b/Masonry.Example/Properties/Resources.Designer.cs deleted file mode 100644 index 4a7c0a1..0000000 --- a/Masonry.Example/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Masonry.Example.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Masonry.Example.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/Masonry.Example/Properties/Resources.resx b/Masonry.Example/Properties/Resources.resx deleted file mode 100644 index af7dbeb..0000000 --- a/Masonry.Example/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Masonry.Example/Properties/Settings.Designer.cs b/Masonry.Example/Properties/Settings.Designer.cs deleted file mode 100644 index fff5e2c..0000000 --- a/Masonry.Example/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Masonry.Example.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/Masonry.Example/Properties/Settings.settings b/Masonry.Example/Properties/Settings.settings deleted file mode 100644 index c14891b..0000000 --- a/Masonry.Example/Properties/Settings.settings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Masonry.Example/ViewModels/MainViewModel.cs b/Masonry.Example/ViewModels/MainViewModel.cs index 1a369ba..ebe6ec6 100644 --- a/Masonry.Example/ViewModels/MainViewModel.cs +++ b/Masonry.Example/ViewModels/MainViewModel.cs @@ -24,6 +24,7 @@ namespace Masonry.Example.ViewModels { using System; using System.Collections.ObjectModel; + using System.Mvvm; using System.Windows; using System.Windows.Controls; using System.Windows.Input; @@ -31,10 +32,7 @@ namespace Masonry.Example.ViewModels using Masonry.Example.Common; - using Prism.Commands; - using Prism.Mvvm; - - internal class MainViewModel : BindableBase + internal class MainViewModel : ViewModel { #region Fields diff --git a/Masonry.Example/Views/MainView.xaml b/Masonry.Example/Views/MainView.xaml index ca5a89f..caa0e59 100644 --- a/Masonry.Example/Views/MainView.xaml +++ b/Masonry.Example/Views/MainView.xaml @@ -3,8 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:prism="http://prismlibrary.com/" xmlns:masonry="clr-namespace:Masonry;assembly=Masonry" - xmlns:common="clr-namespace:Masonry.Example.Common" - prism:ViewModelLocator.AutoWireViewModel="True"> + xmlns:common="clr-namespace:Masonry.Example.Common"> diff --git a/Masonry.Example/Views/MainView.xaml.cs b/Masonry.Example/Views/MainView.xaml.cs index c4db237..a6ad655 100644 --- a/Masonry.Example/Views/MainView.xaml.cs +++ b/Masonry.Example/Views/MainView.xaml.cs @@ -20,6 +20,8 @@ You should have received a copy of the GNU General Public License #endregion License +using Masonry.Example.ViewModels; + namespace Masonry.Example.Views { /// @@ -27,11 +29,21 @@ namespace Masonry.Example.Views /// public partial class MainView { + private MainViewModel _viewModel; + + private MainViewModel ViewModel + { + get { return _viewModel; } + set { _viewModel = value; DataContext = _viewModel; } + } + #region Constructors and Destructors public MainView() { this.InitializeComponent(); + + ViewModel = new MainViewModel(); } #endregion diff --git a/Masonry.Example/packages.config b/Masonry.Example/packages.config deleted file mode 100644 index 64bcb0f..0000000 --- a/Masonry.Example/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Masonry.sln b/Masonry.sln index 6e2a08a..f05fae2 100644 --- a/Masonry.sln +++ b/Masonry.sln @@ -5,16 +5,18 @@ VisualStudioVersion = 17.9.34902.65 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masonry", "Masonry\Masonry.csproj", "{E2BA75BF-C535-46B9-A180-E10533A1C1D1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masonry.Example", "Masonry.Example\Masonry.Example.csproj", "{0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}" - ProjectSection(ProjectDependencies) = postProject - {E2BA75BF-C535-46B9-A180-E10533A1C1D1} = {E2BA75BF-C535-46B9-A180-E10533A1C1D1} +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".ci", ".ci", "{BF9C98A2-6215-41C8-971E-6AC7390F3747}" + ProjectSection(SolutionItems) = preProject + azure-pipelines-mergetest.yml = azure-pipelines-mergetest.yml + azure-pipelines-release.yml = azure-pipelines-release.yml + README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPSample", "UWPSample\UWPSample.csproj", "{F1A994D4-2E34-47B2-ACCC-9FB8F578300A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masonry.Example", "Masonry.Example\Masonry.Example.csproj", "{C5AF1425-A0D4-441D-B3F8-E39DF91EA478}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPMasonry", "UWPMasonry\UWPMasonry.csproj", "{CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MasonryWinUI", "MasonryWinUI\MasonryWinUI.csproj", "{307D1FD7-7D72-4E79-92E1-60D8B09DB357}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "XamlMasonry", "XamlMasonry\XamlMasonry.csproj", "{A9E8ED59-D96B-4A1D-93EE-29015884F05A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasonryWinUI.Example", "MasonryWinUI.Example\MasonryWinUI.Example.csproj", "{8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -50,94 +52,76 @@ Global {E2BA75BF-C535-46B9-A180-E10533A1C1D1}.Release|x64.Build.0 = Release|Any CPU {E2BA75BF-C535-46B9-A180-E10533A1C1D1}.Release|x86.ActiveCfg = Release|Any CPU {E2BA75BF-C535-46B9-A180-E10533A1C1D1}.Release|x86.Build.0 = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|ARM.Build.0 = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|ARM64.Build.0 = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|x64.ActiveCfg = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|x64.Build.0 = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|x86.ActiveCfg = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Debug|x86.Build.0 = Debug|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|Any CPU.Build.0 = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|ARM.ActiveCfg = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|ARM.Build.0 = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|ARM64.ActiveCfg = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|ARM64.Build.0 = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|x64.ActiveCfg = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|x64.Build.0 = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|x86.ActiveCfg = Release|Any CPU - {0ACC6BCC-EEC0-4E97-AF52-060FDB7E4DC2}.Release|x86.Build.0 = Release|Any CPU - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|Any CPU.ActiveCfg = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|Any CPU.Build.0 = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|Any CPU.Deploy.0 = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM.ActiveCfg = Debug|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM.Build.0 = Debug|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM.Deploy.0 = Debug|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM64.Build.0 = Debug|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x64.ActiveCfg = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x64.Build.0 = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x64.Deploy.0 = Debug|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x86.ActiveCfg = Debug|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x86.Build.0 = Debug|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Debug|x86.Deploy.0 = Debug|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|Any CPU.ActiveCfg = Release|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM.ActiveCfg = Release|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM.Build.0 = Release|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM.Deploy.0 = Release|ARM - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM64.ActiveCfg = Release|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM64.Build.0 = Release|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|ARM64.Deploy.0 = Release|ARM64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x64.ActiveCfg = Release|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x64.Build.0 = Release|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x64.Deploy.0 = Release|x64 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x86.ActiveCfg = Release|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x86.Build.0 = Release|x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A}.Release|x86.Deploy.0 = Release|x86 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|ARM.ActiveCfg = Debug|ARM - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|ARM.Build.0 = Debug|ARM - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|ARM64.Build.0 = Debug|ARM64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|x64.ActiveCfg = Debug|x64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|x64.Build.0 = Debug|x64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|x86.ActiveCfg = Debug|x86 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Debug|x86.Build.0 = Debug|x86 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|Any CPU.Build.0 = Release|Any CPU - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|ARM.ActiveCfg = Release|ARM - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|ARM.Build.0 = Release|ARM - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|ARM64.ActiveCfg = Release|ARM64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|ARM64.Build.0 = Release|ARM64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x64.ActiveCfg = Release|x64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x64.Build.0 = Release|x64 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x86.ActiveCfg = Release|x86 - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A}.Release|x86.Build.0 = Release|x86 - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM.ActiveCfg = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM.Build.0 = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|ARM64.Build.0 = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x64.ActiveCfg = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x64.Build.0 = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x86.ActiveCfg = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Debug|x86.Build.0 = Debug|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|Any CPU.Build.0 = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM.ActiveCfg = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM.Build.0 = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM64.ActiveCfg = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|ARM64.Build.0 = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x64.ActiveCfg = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x64.Build.0 = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x86.ActiveCfg = Release|Any CPU - {A9E8ED59-D96B-4A1D-93EE-29015884F05A}.Release|x86.Build.0 = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|ARM.Build.0 = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|ARM64.Build.0 = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|x64.ActiveCfg = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|x64.Build.0 = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Debug|x86.Build.0 = Debug|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|Any CPU.Build.0 = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|ARM.ActiveCfg = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|ARM.Build.0 = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|ARM64.ActiveCfg = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|ARM64.Build.0 = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|x64.ActiveCfg = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|x64.Build.0 = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|x86.ActiveCfg = Release|Any CPU + {C5AF1425-A0D4-441D-B3F8-E39DF91EA478}.Release|x86.Build.0 = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|Any CPU.Build.0 = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|ARM.ActiveCfg = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|ARM.Build.0 = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|ARM64.Build.0 = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|x64.ActiveCfg = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|x64.Build.0 = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|x86.ActiveCfg = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Debug|x86.Build.0 = Debug|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|Any CPU.ActiveCfg = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|Any CPU.Build.0 = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|ARM.ActiveCfg = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|ARM.Build.0 = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|ARM64.ActiveCfg = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|ARM64.Build.0 = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|x64.ActiveCfg = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|x64.Build.0 = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|x86.ActiveCfg = Release|Any CPU + {307D1FD7-7D72-4E79-92E1-60D8B09DB357}.Release|x86.Build.0 = Release|Any CPU + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|Any CPU.ActiveCfg = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|Any CPU.Build.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|Any CPU.Deploy.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM.ActiveCfg = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM.Build.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM.Deploy.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM64.Build.0 = Debug|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x64.ActiveCfg = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x64.Build.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x64.Deploy.0 = Debug|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x86.ActiveCfg = Debug|x86 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x86.Build.0 = Debug|x86 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Debug|x86.Deploy.0 = Debug|x86 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|Any CPU.ActiveCfg = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|Any CPU.Build.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|Any CPU.Deploy.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM.ActiveCfg = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM.Build.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM.Deploy.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM64.ActiveCfg = Release|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM64.Build.0 = Release|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|ARM64.Deploy.0 = Release|ARM64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x64.ActiveCfg = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x64.Build.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x64.Deploy.0 = Release|x64 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x86.ActiveCfg = Release|x86 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x86.Build.0 = Release|x86 + {8AE04D02-7F9F-48AB-A117-2D6BEFDCD78A}.Release|x86.Deploy.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index 47ef244..b963e41 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -12,13 +12,13 @@ Lizzaran newky2k MIT 2.1 - Fluid layout grid for WPF (Net Core 3.x and .Net Framework) + Fluid layout grid for WPF (.NET 8 and .Net Framework) https://github.com/newky2k/WPF-Masonry https://github.com/newky2k/WPF-Masonry Git WPF Masonry Fluid - Updated to work with Net Core + Updated to work with .NET 8.0 Copyright 2013 - 2016 Nikita Bernthaler diff --git a/MasonryWinUI.Example/App.xaml b/MasonryWinUI.Example/App.xaml new file mode 100644 index 0000000..e81b23d --- /dev/null +++ b/MasonryWinUI.Example/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/MasonryWinUI.Example/App.xaml.cs b/MasonryWinUI.Example/App.xaml.cs new file mode 100644 index 0000000..29144af --- /dev/null +++ b/MasonryWinUI.Example/App.xaml.cs @@ -0,0 +1,50 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using Microsoft.UI.Xaml.Shapes; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace MasonryWinUI.Example +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) + { + m_window = new MainWindow(); + m_window.Activate(); + } + + private Window m_window; + } +} diff --git a/MasonryWinUI.Example/Assets/LockScreenLogo.scale-200.png b/MasonryWinUI.Example/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..7440f0d4bf7c7e26e4e36328738c68e624ee851e GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 literal 0 HcmV?d00001 diff --git a/MasonryWinUI.Example/Assets/SplashScreen.scale-200.png b/MasonryWinUI.Example/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..32f486a86792a5e34cd9a8261b394c49b48f86be GIT binary patch literal 5372 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 literal 0 HcmV?d00001 diff --git a/MasonryWinUI.Example/Assets/Square44x44Logo.scale-200.png b/MasonryWinUI.Example/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..f713bba67f551ef91020b75716a4dc8ebd744b1c GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< literal 0 HcmV?d00001 diff --git a/MasonryWinUI.Example/Assets/StoreLogo.png b/MasonryWinUI.Example/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4586f26bdf7841cad10f39cdffe2aca3af252c1 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; literal 0 HcmV?d00001 diff --git a/UWPSample/Assets/jobs_white.png b/MasonryWinUI.Example/Assets/jobs_white.png similarity index 100% rename from UWPSample/Assets/jobs_white.png rename to MasonryWinUI.Example/Assets/jobs_white.png diff --git a/UWPSample/MainPage.xaml b/MasonryWinUI.Example/MainPage.xaml similarity index 59% rename from UWPSample/MainPage.xaml rename to MasonryWinUI.Example/MainPage.xaml index 052e76f..de8e730 100644 --- a/UWPSample/MainPage.xaml +++ b/MasonryWinUI.Example/MainPage.xaml @@ -1,12 +1,13 @@ - + @@ -40,9 +41,9 @@ + Style="{StaticResource TallLargeTileStyle}" + Background="Teal" + HorizontalTitleAlignment="Right"> @@ -50,57 +51,57 @@ + Background="#ff4a03" + Style="{StaticResource LargeTileStyle}" HorizontalTitleAlignment="Right"> + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="AccountMultiple" /> + Background="Green" + Style="{StaticResource LargeTileStyle}" > + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="Bank" /> + Background="BlueViolet" + Style="{StaticResource SmallTileStyle}" > + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="CreditCard" /> + Background="#D2691E" + Style="{StaticResource LargeTileStyle}" HorizontalTitleAlignment="Right"> + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="Printer" /> + Background="Gray" + Style="{StaticResource SmallTileStyle}" > + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="ChartBar" /> + Background="#FF00364A" + Style="{StaticResource LargeTileStyle}"> + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="Cog" /> + Background="RosyBrown" + Style="{StaticResource LargeTileStyle}" HorizontalTitleAlignment="Right" > + Height="40" Foreground="{x:Bind WhiteBrush}" + Kind="NaturePeople" /> diff --git a/MasonryWinUI.Example/MainPage.xaml.cs b/MasonryWinUI.Example/MainPage.xaml.cs new file mode 100644 index 0000000..b47e44f --- /dev/null +++ b/MasonryWinUI.Example/MainPage.xaml.cs @@ -0,0 +1,35 @@ + +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Windows.Media; +using Windows.Foundation; +using Windows.Foundation.Collections; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace MasonryWinUI.Example +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainPage : Page + { + public System.Windows.Media.Brush WhiteBrush = new System.Windows.Media.SolidColorBrush(Colors.White); + + public MainPage() + { + this.InitializeComponent(); + } + } +} diff --git a/MasonryWinUI.Example/MainWindow.xaml b/MasonryWinUI.Example/MainWindow.xaml new file mode 100644 index 0000000..af94d69 --- /dev/null +++ b/MasonryWinUI.Example/MainWindow.xaml @@ -0,0 +1,11 @@ + + + + diff --git a/MasonryWinUI.Example/MainWindow.xaml.cs b/MasonryWinUI.Example/MainWindow.xaml.cs new file mode 100644 index 0000000..2885f3a --- /dev/null +++ b/MasonryWinUI.Example/MainWindow.xaml.cs @@ -0,0 +1,32 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace MasonryWinUI.Example +{ + /// + /// An empty window that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainWindow : Window + { + public MainWindow() + { + this.InitializeComponent(); + } + + } +} diff --git a/MasonryWinUI.Example/MasonryWinUI.Example.csproj b/MasonryWinUI.Example/MasonryWinUI.Example.csproj new file mode 100644 index 0000000..afa6ded --- /dev/null +++ b/MasonryWinUI.Example/MasonryWinUI.Example.csproj @@ -0,0 +1,63 @@ + + + WinExe + net8.0-windows10.0.19041.0 + 10.0.17763.0 + MasonryWinUI.Example + app.manifest + x86;x64;ARM64 + win-x86;win-x64;win-arm64 + win10-x86;win10-x64;win10-arm64 + win-$(Platform).pubxml + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MSBuild:Compile + + + + + + true + + \ No newline at end of file diff --git a/UWPSample/Package.appxmanifest b/MasonryWinUI.Example/Package.appxmanifest similarity index 51% rename from UWPSample/Package.appxmanifest rename to MasonryWinUI.Example/Package.appxmanifest index cdb0977..c90c1f2 100644 --- a/UWPSample/Package.appxmanifest +++ b/MasonryWinUI.Example/Package.appxmanifest @@ -4,23 +4,25 @@ xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" - IgnorableNamespaces="uap mp"> + xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" + IgnorableNamespaces="uap rescap"> - + - UWPSample - newky + MasonryWinUI.Example + Admin Assets\StoreLogo.png - + + @@ -30,20 +32,20 @@ + EntryPoint="$targetentrypoint$"> - + Square44x44Logo="Assets\Square44x44Logo.png"> + - + - \ No newline at end of file + diff --git a/MasonryWinUI.Example/Properties/launchSettings.json b/MasonryWinUI.Example/Properties/launchSettings.json new file mode 100644 index 0000000..e1686f3 --- /dev/null +++ b/MasonryWinUI.Example/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "MasonryWinUI.Example (Package)": { + "commandName": "MsixPackage" + }, + "MasonryWinUI.Example (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/UWPSample/ViewModels/MainViewModel.cs b/MasonryWinUI.Example/ViewModels/MainViewModel.cs similarity index 87% rename from UWPSample/ViewModels/MainViewModel.cs rename to MasonryWinUI.Example/ViewModels/MainViewModel.cs index 4f73d5b..763162e 100644 --- a/UWPSample/ViewModels/MainViewModel.cs +++ b/MasonryWinUI.Example/ViewModels/MainViewModel.cs @@ -1,4 +1,8 @@ -using System; +using Microsoft.UI; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Media; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -7,13 +11,13 @@ using System.Threading.Tasks; using Windows.UI; using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media; -namespace UWPSample.ViewModels +namespace MasonryWinUI.Example { public class MainViewModel : ViewModel { + public Brush WhiteBrush = new SolidColorBrush(Colors.White); + private ObservableCollection _elements; public ObservableCollection Elements diff --git a/MasonryWinUI.Example/app.manifest b/MasonryWinUI.Example/app.manifest new file mode 100644 index 0000000..ae4b2a5 --- /dev/null +++ b/MasonryWinUI.Example/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/XamlMasonry/MasonryControl.winui.cs b/MasonryWinUI/MasonryControl.winui.cs similarity index 99% rename from XamlMasonry/MasonryControl.winui.cs rename to MasonryWinUI/MasonryControl.winui.cs index ba917e7..1488c83 100644 --- a/XamlMasonry/MasonryControl.winui.cs +++ b/MasonryWinUI/MasonryControl.winui.cs @@ -5,7 +5,7 @@ using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; -namespace XamlMasonry +namespace MasonryWinUI { public class MasonryControl : ItemsControl { diff --git a/MasonryWinUI/MasonryWinUI.csproj b/MasonryWinUI/MasonryWinUI.csproj new file mode 100644 index 0000000..1c3b2c4 --- /dev/null +++ b/MasonryWinUI/MasonryWinUI.csproj @@ -0,0 +1,16 @@ + + + net8.0-windows10.0.19041.0 + 10.0.17763.0 + MasonryWinUI + win-x86;win-x64;win-arm64 + win10-x86;win10-x64;win10-arm64 + true + + + + + + + + diff --git a/XamlMasonry/Themes/Generic.xaml b/MasonryWinUI/Themes/Generic.xaml similarity index 98% rename from XamlMasonry/Themes/Generic.xaml rename to MasonryWinUI/Themes/Generic.xaml index a996594..388468c 100644 --- a/XamlMasonry/Themes/Generic.xaml +++ b/MasonryWinUI/Themes/Generic.xaml @@ -1,7 +1,7 @@ + xmlns:local="using:MasonryWinUI"> - - - - diff --git a/UWPMasonry/Tile.cs b/UWPMasonry/Tile.cs deleted file mode 100644 index 71d5acb..0000000 --- a/UWPMasonry/Tile.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Documents; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; - -// The Templated Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234235 - -namespace UWPMasonry -{ - public sealed class Tile : Button - { - public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); - - public string Title - { - get { return (string)GetValue(TitleProperty); } - set { SetValue(TitleProperty, value); } - } - - /// - /// HorizontalTitleAlignment Dependency Property. - /// Default Value: HorizontalAlignment.Left - /// - public static readonly DependencyProperty HorizontalTitleAlignmentProperty = - DependencyProperty.Register( - nameof(HorizontalTitleAlignment), - typeof(HorizontalAlignment), - typeof(Tile), - new PropertyMetadata(HorizontalAlignment.Left)); - - /// - /// Gets/Sets the horizontal alignment of the title. - /// - [System.ComponentModel.Bindable(true), Category("Layout")] - public HorizontalAlignment HorizontalTitleAlignment - { - get { return (HorizontalAlignment)GetValue(HorizontalTitleAlignmentProperty); } - set { SetValue(HorizontalTitleAlignmentProperty, value); } - } - - /// - /// VerticalTitleAlignment Dependency Property. - /// Default Value: VerticalAlignment.Bottom - /// - public static readonly DependencyProperty VerticalTitleAlignmentProperty = - DependencyProperty.Register( - nameof(VerticalTitleAlignment), - typeof(VerticalAlignment), - typeof(Tile), - new PropertyMetadata(VerticalAlignment.Bottom)); - - /// - /// Gets/Sets the vertical alignment of the title. - /// - [System.ComponentModel.Bindable(true), Category("Layout")] - public VerticalAlignment VerticalTitleAlignment - { - get { return (VerticalAlignment)GetValue(VerticalTitleAlignmentProperty); } - set { SetValue(VerticalTitleAlignmentProperty, value); } - } - - public static readonly DependencyProperty CountProperty = DependencyProperty.Register(nameof(Count), typeof(string), typeof(Tile), new PropertyMetadata(default(string))); - - public string Count - { - get { return (string)GetValue(CountProperty); } - set { SetValue(CountProperty, value); } - } - - public static readonly DependencyProperty TiltFactorProperty = DependencyProperty.Register(nameof(TiltFactor), typeof(int), typeof(Tile), new PropertyMetadata(5)); - - public int TiltFactor - { - get { return (Int32)GetValue(TiltFactorProperty); } - set { SetValue(TiltFactorProperty, value); } - } - - public static readonly DependencyProperty TitleFontSizeProperty = DependencyProperty.Register(nameof(TitleFontSize), typeof(double), typeof(Tile), new PropertyMetadata(12d)); - - public double TitleFontSize - { - get { return (double)GetValue(TitleFontSizeProperty); } - set { SetValue(TitleFontSizeProperty, value); } - } - - public static readonly DependencyProperty CountFontSizeProperty = DependencyProperty.Register(nameof(CountFontSize), typeof(double), typeof(Tile), new PropertyMetadata(28d)); - - public double CountFontSize - { - get { return (double)GetValue(CountFontSizeProperty); } - set { SetValue(CountFontSizeProperty, value); } - } - public Tile() - { - this.DefaultStyleKey = typeof(Tile); - } - } -} diff --git a/UWPMasonry/UWPMasonry.csproj b/UWPMasonry/UWPMasonry.csproj deleted file mode 100644 index c35391c..0000000 --- a/UWPMasonry/UWPMasonry.csproj +++ /dev/null @@ -1,150 +0,0 @@ - - - - - Debug - AnyCPU - {CDB0FEA7-AE2F-4BA1-AD67-871B764CD05A} - Library - Properties - UWPMasonry - UWPMasonry - en-US - UAP - 10.0.19041.0 - 10.0.17763.0 - 14 - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - prompt - 4 - - - x86 - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - false - prompt - - - x86 - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - false - prompt - - - ARM - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - false - prompt - - - ARM - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - false - prompt - - - ARM64 - true - bin\ARM64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - false - prompt - - - ARM64 - bin\ARM64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - false - prompt - - - x64 - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - false - prompt - - - x64 - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - false - prompt - - - PackageReference - - - - - - - - - - 6.2.10 - - - - - MSBuild:Compile - Designer - - - - 14.0 - - - - \ No newline at end of file diff --git a/UWPSample/App.xaml b/UWPSample/App.xaml deleted file mode 100644 index 846841f..0000000 --- a/UWPSample/App.xaml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/UWPSample/App.xaml.cs b/UWPSample/App.xaml.cs deleted file mode 100644 index d16e016..0000000 --- a/UWPSample/App.xaml.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel; -using Windows.ApplicationModel.Activation; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; - -namespace UWPSample -{ - /// - /// Provides application-specific behavior to supplement the default Application class. - /// - sealed partial class App : Application - { - /// - /// Initializes the singleton application object. This is the first line of authored code - /// executed, and as such is the logical equivalent of main() or WinMain(). - /// - public App() - { - this.InitializeComponent(); - this.Suspending += OnSuspending; - } - - /// - /// Invoked when the application is launched normally by the end user. Other entry points - /// will be used such as when the application is launched to open a specific file. - /// - /// Details about the launch request and process. - protected override void OnLaunched(LaunchActivatedEventArgs e) - { - Frame rootFrame = Window.Current.Content as Frame; - - // Do not repeat app initialization when the Window already has content, - // just ensure that the window is active - if (rootFrame == null) - { - // Create a Frame to act as the navigation context and navigate to the first page - rootFrame = new Frame(); - - rootFrame.NavigationFailed += OnNavigationFailed; - - if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) - { - //TODO: Load state from previously suspended application - } - - // Place the frame in the current Window - Window.Current.Content = rootFrame; - } - - if (e.PrelaunchActivated == false) - { - if (rootFrame.Content == null) - { - // When the navigation stack isn't restored navigate to the first page, - // configuring the new page by passing required information as a navigation - // parameter - rootFrame.Navigate(typeof(MainPage), e.Arguments); - } - // Ensure the current window is active - Window.Current.Activate(); - } - } - - /// - /// Invoked when Navigation to a certain page fails - /// - /// The Frame which failed navigation - /// Details about the navigation failure - void OnNavigationFailed(object sender, NavigationFailedEventArgs e) - { - throw new Exception("Failed to load Page " + e.SourcePageType.FullName); - } - - /// - /// Invoked when application execution is being suspended. Application state is saved - /// without knowing whether the application will be terminated or resumed with the contents - /// of memory still intact. - /// - /// The source of the suspend request. - /// Details about the suspend request. - private void OnSuspending(object sender, SuspendingEventArgs e) - { - var deferral = e.SuspendingOperation.GetDeferral(); - //TODO: Save application state and stop any background activity - deferral.Complete(); - } - } -} diff --git a/UWPSample/Assets/LockScreenLogo.scale-200.png b/UWPSample/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 735f57adb5dfc01886d137b4e493d7e97cf13af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcmaJ>TTC2P7~aKltDttVHYH6u8Io4i*}3fO&d$gd*bA_<3j~&e7%8(eXJLfhS!M@! zKrliY>>6yT4+Kr95$!DoD(Qn-5TP|{V_KS`k~E6(LGS@#`v$hQo&^^BKsw3HIsZBT z_y6C2n`lK@apunKojRQ^(_P}Mgewt$(^BBKCTZ;*xa?J3wQ7~@S0lUvbcLeq1Bg4o zH-bvQi|wt~L7q$~a-gDFP!{&TQfc3fX*6=uHv* zT&1&U(-)L%Xp^djI2?~eBF2cxC@YOP$+9d?P&h?lPy-9M2UT9fg5jKm1t$m#iWE{M zIf%q9@;fyT?0UP>tcw-bLkz;s2LlKl2qeP0w zECS7Ate+Awk|KQ+DOk;fl}Xsy4o^CY=pwq%QAAKKl628_yNPsK>?A>%D8fQG6IgdJ ztnxttBz#NI_a@fk7SU`WtrpsfZsNs9^0(2a z@C3#YO3>k~w7?2hipBf{#b6`}Xw1hlG$yi?;1dDs7k~xDAw@jiI*+tc;t2Lflg&bM)0!Y;0_@=w%`LW^8DsYpS#-bLOklX9r?Ei}TScw|4DbpW%+7 zFgAI)f51s}{y-eWb|vrU-Ya!GuYKP)J7z#*V_k^Xo>4!1Yqj*m)x&0L^tg3GJbVAJ zJ-Pl$R=NAabouV=^z_t;^K*0AvFs!vYU>_<|I^#c?>>CR<(T?=%{;U=aI*SbZADLH z&(f2wz_Y0??Tf|g;?|1Znw6}6U43Q#qNRwv1vp9uFn1)V#*4p&%$mP9x&15^OaBiDS(XppT|z^>;B{PLVEbS3IFYV yGvCsSX*m diff --git a/UWPSample/Assets/SplashScreen.scale-200.png b/UWPSample/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 023e7f1feda78d5100569825acedfd213a0d84e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7700 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 diff --git a/UWPSample/Assets/Square150x150Logo.scale-200.png b/UWPSample/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index af49fec1a5484db1d52a7f9b5ec90a27c7030186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2937 zcma)84OCO-8BSud5)jwMLRVKgX(S?$n?Ld|vrsm<$CF7)&zTbyy1FE5bU`Q17MRv`9ue$;R(@8kR;#vJ*IM0>cJIAOte!d7oRgdH zd%ySjdB6L9=gX^A6)VzH7p2l@v~3zJAMw|DFy#^)F@@F*`mqUn=Il>l)8_+ab;nOW{%+iPx z+s{Eu|&pIs)Z7{La9~?xKfyl z#43?gjEL15d4WbOZo#SiP%>DB^+BcnJ=7dHEe;r#G=tuw|ka z%q@}##Uh7;tc%L_64m(kHtw74ty%BJMb)_1)#S0j`)F8_1jF7vScpsnH=0V19bO8y zR`0SjIdCUo&=>JwMQF8KHA<{ODHTiQh}0^@5QRmCA?gOH6_H3K^-_sNB^RrdNuK-R zOO*vOrKCVvDwgUck`kF(E7j{I#iiN;b*ZdCt4m@HPA`EuEqGGf4%!K<;(=I=&Vyrw z%TwcWtxa}8mCZ%Cyf&ActJ6_$ox5z6-D!0-dvnRx6t7y3d+h6QYpKWO;8OdnvERo7 zuEf>ih5`wqY)~o@OeVt-wM?Q!>QzdGRj!bz6fzYrfw$hZfAKzr2-M+D+R>}~oT574c;_3zquHcElqKIsryILt3g8n3jcMb+j?i?-L3FpZJ z2WRVBRdDPc+G5aaYg#5hpE+6nQ|(VSoxT3|biF;BUq#==-27Xi=gihDPYP$7?=9cP zYKE$jeQ|3~_L0VG-(F~2ZPyD0=k{J4Q~h(t__{-mz_w8{JDY9{`1ouzz!Vr5!ECdE z6U~O1k8c}24V7~zzXWTV-Pe4)y}wQJS&q%H5`Fo_f_JvIU489aCX$;P`u#!I-=^4ijC2{&9!O&h>mi?9oYD=GC#%)6{GzN6nQYw+Fal50!#x^asjBBR50i`+mho*ttoqV)ubM2KD9S~k7+FR4>{29?6 z{!l6kDdyTN0YJ9LgkPWeXm|gyi@zM3?0@{&pXT12w|78&W-q!RRF)&iLCEZVH<|fR zN0fr2^t8H(>L?>K#>^+jWROLral(Qy-xoBq1U7A&DV||wClb)Otd9?(gZ|8znMF}D zf<1haWz^s0qgecz;RFGt0C-B4g`jNGHsFU+;{<%t65v^sjk^h$lmWn#B0#_)9ij&d z-~lc`A)YYExi^7sBuPM^Y|wA2g*5?`K?#7tzELQYNxGo$UB$4J8RJp1k(8Jj+~hMT zlN~>M@KTTh^--8y3PK_NZ@AC!{PT=CziBzGd+wTJ^@icH!Bd}%)g8V)%K?|c&WTUk zy}qv1C%(fjRoZ4ozC3{O%@5?)XzH35zHns$pgU*Q?fj4v?fp1Qbm+j;3l;9jam9Da zXVcKjPlQ73x78QPu|Ffm6x?`~e3oD=gl=4kYK?={kD5j~QCXU)`HSdduNNENzA*2$ zOm3PzF!lN5e*06-f1Uot67wY#{o-S1!KZ7E=!~7ynnk9_iJR#kFoNbAOT#^2Gd17F zMmvU6>lndZQGd|ax9kUoXXO+$N?|j@6qpsF&_j7YXvwo_C{JpmLw5&#e6k>atv%es z5)7r*Wvv_JkUpT}M!_o!nVlEk1Zbl=a*2hQ*<|%*K1Glj^FcF`6kTzGQ3lz~2tCc@ z&x|tj;aH&1&9HwcJBcT`;{?a+pnej;M1HO(6Z{#J!cZA04hnFl;NXA+&`=7bjW_^o zfC40u3LMG?NdPtwGl>Tq6u}*QG)}-y;)lu-_>ee3kibW(69n0$0Zy!}9rQz%*v1iO zT9_H>99yIrSPYVy6^);rR}7Yo=J_T@hi+qhTZXnVWyf;JDYm5#eYLTxr*?kiNn!+Y zQ+LUkBafNJ#rH#C(?d5^;gw9o#%daEI{mA*LHPIHPU`#|H$hD zwm>0&+kahQ)E#%~k>&5@&#Vg82H?s%71=)(soi@174pi9--2{w{1$}Sz4zGn3Du&x bht0Iza^2ykEt4(epJ78uh5nDlX8(TxzDYwP diff --git a/UWPSample/Assets/Square44x44Logo.scale-200.png b/UWPSample/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index ce342a2ec8a61291ba76c54604aea7e9d20af11b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1647 zcmaJ?eM}Q)7(e+G1Q(|`V9JhTI2>MkceK4;p;PR&$Pi?ejk3YQ_3o`S&|W_dsOZ8# zWPTt69g`t$ab`0cj-Y0yiBSOqmd)tG7G(}M5aP0_%&9TijB#&)I{zSE^4@#z^FF`l z`8{8`o%wlL(UI|y2!cdsuVamHH~H86F!*-15em4)NqUpCQM5?aoC_eCf@lV4wvF2a zjDQn1JBL69f&@2M3rvzJcfE!eZ8FZUBlFlC5RD)it33{mF9#B82AiyQE%w)`vlwa> zv{<1sm&kSKK$&%2jSFn7$t&P%%6Ue>R=EAnG8N7fqynWG8L3p!4801a;8{+nliO(qd(jNJ_?+9W3#hLIDLoT6~3fx9=`CC-D}-AMrpEO7HK zt3$GicGPc?GmDjy7K2P@La;eu4!$zWCZ`ym{Z$b zu-O6RM&K4JT|BIZB`E-gxqG%FzanI#+2FFmqHqXG7yxWB=w55RGOM)$xMb(>kSNR z2w=1AZi%z=AmG~yea~XaXJR!v7vLn(RUnELfiB1|6D84ICOS}^Zo2AdN}<&*h}G_u z{xZ!(%>tLT3J3<5XhWy-tg+6)0nmUUENLW8TWA{R6bgVd3X;anYFZ^IRis*_P-C-r z;i>%1^eL3UI2-{w8nuFFcs0e~7J{O2k^~Ce%+Ly4U?|=!0LH=t6()xi<^I-rs+9sF z*q{E-CxZbGPeu#a;XJwE;9S1?#R&uns>^0G3p`hEUF*v`M?@h%T%J%RChmD|EVydq zmHWh*_=S%emRC*mhxaVLzT@>Z2SX0u9v*DIJ@WC^kLVdlGV6LpK$KIrlJqc zpJ921)+3JJdTx|<`G&kXpKkjGJv=76R`yYIQ{#c-`%+`#V(7}Q;&@6U8!Td1`d;?N z_9mnI#?AA}4J!r)LN4!E-@H5eXauuB7TOawS>Y|{-P?NNx-lq+z1W-+y(;39P&&LP zL{N80?&=C*qKmdA^moMZRuPcD!B<*mq$ch=0Cnlitw#txRWhb3%TQvPqjkC`F69G4b! ze7z9MZ#+;_#l?H37UqUhDFb^l&s2{oM$3I0o^Q!yx;;V)QmCMo)Tb_ui|mit8MS?U zm##6$sZZ1$@|s%?l@>4Z<*Q}sRBSKMhb4I{e5LdEhsHIHTe8Bod5c>6QtT>$XgUBz z6MK`kO$=jmt@FqggOhJ5j~e@ygRbG;<{Vu)*+nn9aQeo0;$#j;|MS=S$&L?BeV25z xs3B`@=#`5TF{^6(A1rvdY@|-RtQ|iS5{tyX+wH?;n8E)G$kykv-D^wh{{!TZT%7;_ diff --git a/UWPSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/UWPSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index f6c02ce97e0a802b85f6021e822c89f8bf57d5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmaJ>TWs4@7*5+{G#S+&C!qC#> zf>5N3P6jO*Cz>ug*(_DmW=)kea&m$gZ^+nyiF`;j%w@}y8)>p*SH}C`m?DXeieF2U zyQHecc_L%Gh!7GMt+hG06y;+|p4>m~}PjA}rKViGiEnn7G0ZO<>G|7q;2?NwGCM3s?eued6%hd$B+ z*kQJ{#~$S=DFE(%=E+UkmlEI*%3llUf~8Ja9YU1Vui0IbGBkW_gHB%Rd&!!ioX zs40O?i9I{};kle7GMvE7(rk`la=gTI)47=>%?q@^iL-nUo3}h4S}N-KHn8t5mVP8w z&bSErwp+37 zNJJ8?a|{r5Q3R0Z5s-LB1WHOwYC@7pCHWND#cL1cZ?{kJ368_*(UDWUDyb<}0y@o# zfMF016iMWPCb6obAxT$JlB6(2DrlXDTB&!0`!m??4F(qWMhjVZo?JXQmz`1*58Z=& zcDmB|S-E@j?BoFGix0flckqdS4jsPNzhfWyWIM98GxcLs89C(~dw%$_t;JjX-SD}E zfiGV;{8Q%8r}w9x>EEigW81>`kvnU@pK)4+xk9@+bNj9L!AAZ@SZ@q|)&BmY3+HZx zul~BeG4|}-;L%cHViQGQX?^zFfO0&#cHwel=d`lH9sJ-@Sl@n*(8J2>%Ac`IxyY?Q z{=GhWvC#gu-~Ia7*n{=+;qM?Ul_wy1+u7ho;=`>EwP^g~R@{unBds`!#@}tluZQpS zm)M~nYEifJWJGx?_6DcTy>#uh%>!H9=hb^(v`=m3F1{L>db=<5_tm+_&knAQ2EU$s Mu9UqpbNZeC0BbUo^Z)<= diff --git a/UWPSample/Assets/StoreLogo.png b/UWPSample/Assets/StoreLogo.png deleted file mode 100644 index 7385b56c0e4d3c6b0efe3324aa1194157d837826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1451 zcmaJ>eN5D57_Z|bH;{0+1#mbl)eTU3{h)Wf7EZV?;HD@XL@{B`Ui%(2aMxQ~xdXSv z5nzWi(LW)U2=Vc-cY@s7nPt{i0hc6!7xN4NNHI#EQl>YNBy8l4%x9gr_W-j zEZMQmmTIy(>;lblRfh`dIyTgc9W5d!VP$L4(kKrN1c5G~(O_#xG zAJCNTstD^5SeXFB+&$h=ToJP2H>xr$iqPs-#O*;4(!Fjw25-!gEb*)mU}=)J;Iu>w zxK(5XoD0wrPSKQ~rbL^Cw6O_03*l*}i=ydbu7adJ6y;%@tjFeXIXT+ms30pmbOP%Q zX}S;+LBh8Tea~TSkHzvX6$rYb)+n&{kSbIqh|c7hmlxmwSiq5iVhU#iEQ<>a18|O^Sln-8t&+t`*{qBWo5M?wFM(JuimAOb5!K#D}XbslM@#1ZVz_;!9U zpfEpLAOz=0g@bd6Xj_ILi-x^!M}73h^o@}hM$1jflTs|Yuj9AL@A3<-?MV4!^4q`e z)fO@A;{9K^?W?DbnesnPr6kK>$zaKo&;FhFd(GYFCIU^T+OIMb%Tqo+P%oq(IdX7S zf6+HLO?7o0m+p>~Tp5UrXWh!UH!wZ5kv!E`_w)PTpI(#Iw{AS`gH4^b(bm^ZCq^FZ zY9DD7bH}rq9mg88+KgA$Zp!iWncuU2n1AuIa@=sWvUR-s`Qb{R*kk(SPU^`$6BXz8 zn#7yaFOIK%qGxyi`dYtm#&qqox0$h=pNi#u=M8zUG@bpiZ=3sT=1}Trr}39cC)H|v zbL?W)=&s4zrh)7>L(|cc%$1#!zfL?HjpeP%T+x_a+jZ16b^iKOHxFEX$7d|8${H-* zIrOJ5w&i$>*D>AKaIoYg`;{L@jM((Kt?$N$5OnuPqVvq**Nm}(f0wwOF%iX_Pba;V z;m@wxX&NcV3?<1+u?A{y_DIj7#m3Af1rCE)o`D&Y3}0%7E;iX1yMDiS)sh0wKi!36 zL!Wmq?P^Ku&rK~HJd97KkLTRl>ScGFYZNlYytWnhmuu|)L&ND8_PmkayQb{HOY640 bno1(wj@u8DCVuFR|31B*4ek@pZJqxCDDe1x diff --git a/UWPSample/Assets/Wide310x150Logo.scale-200.png b/UWPSample/Assets/Wide310x150Logo.scale-200.png deleted file mode 100644 index 288995b397fdbef1fb7e85afd71445d5de1952c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3204 zcmbVPeQXow8NYmBd90>}0NP?GhXW~VaeThm=a0tV#EwJMI!)6M3}|c4_Bl3=Kd>G0 z(GHx1wl<7(tP?FsOQkTilSo*iIvF%uArExJ73~P zSv1xEy!U(Wd4A9D`FQV@W3@F^qJ@PEF$@z`Z!*BbFsS(^?B zyiAzJ+q})bkgiQHWqEb*jJD-coHYr1^iocg)l!Qa{Xqs-l~6J}p-|##ZHYofskQ3$ zI0;xzXyhazBeXhIsg5A=%ufo@f)1yy&ScKS0;HF^!r_2UE^lpZEom(+@duma3awTv zCrCL-%D_SvYWIcdHkmI}#50(fkUi)Qgx!80ju>g1za^}ff>JI8Z@^-iCiaCgg@TgF z+vtE?Q9{VQUX&MW9SYYmGcxA14%N2@7FwBTD4N<(2{nWgV8$e3?-F=L^&FrtWn~(U_Q~~^uYiyeY6-KoTnfh9AWz@ zIKje0)u!_Lw)E}G!#kEfwKVdNt(UAf9*f>tEL_(=xco-T%jTi@7YlC3hs2ik%Le0H ztj}RTeCF(5mwvi3_56>-yB?l;J>-1%!9~=fs|QcNG3J~a@JCu`4SB460s0ZO+##4fFUSGLcj_ja^fL4&BKALfb#$6$O?>P@qx2Agl^x0i&ugt zsy5Pyu=()`7HRMG3IB7F1@`_ z+-!J%#i6e^U$e#+C%Q>_qVRzWRsG^W_n+@OcX@vzI&z;mzHNb!GQ?LWA(wtpqHqTM z1OFw_{Zn?fD)p)`c`kOgv{de=v@suGRqY{N^U7gI1VF3*F=obwaXI6ob5__Yn zVTguS!%(NI09J8x#AO_aW!9W7k*UvB;IWDFC3srwftr{kHj%g)fvnAm;&h_dnl~

MY- zf+K}sCe8qU6Ujs`3ua{U0Of$R_gVQBuUA za0v=mu#vIOqiiAZOr&h*$WyOw&k-xr$;G4Ixa!#TJNr>95(h>l%)PUy4p+^SgR(uR zta%k*?ny-+nAr8spEk1fo{J4i!b^Fia`N{_F6@zidA2ZTTrjl#^5Z-2KfB@Cu}l9s z(*|Z2jc?p~vn2f)3y9i*7zJV1L{$?|&q)4oaT;uXi6>1GkRXVTOzAz(RHEmr=eFIi z`}<>-Q?K0GN8!IYxeP1XKXO+jsJbp~o^);Bc;%b7Flpe7;1`Ny@3r7ZR;?R)aJt8C ziNlEC<@3f_lIV4TwV}&e;D!Ee5_|e#g0LUh=5vmYWYm7&2h*M>QPKvGh9-)wfMMW3 z8J9b%1k7dzPzO0_NGQy92BZ^FR6R~6;^6?lqO;-QUP4BY%cG%3vEhbm#>4vIhPBh3 z-+pZGjh$x%Hp{?=FHsMp0&wNPlj00us{&`1ZOZTqs8%4X&xH=UDr*xyBW(Zp&Em94 zf)ZSfn#yg0N)>!1kWdkqJ^S*z0FF5|fj&qcE#Na|%OY0$uO>!&hP+1ywfD_WXk@4J(?MBftK7>$Nvqh@tDuarN%PrTLQ2Uzysx>UV=V zk^RrDSvdQ?0;=hY67EgII-f4`t=+i*yS=Y~!XlqIy_4x&%+OdfbKOFPXS2X5%4R{N z$SQMX^AK6(fA - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class MainPage : Page - { - - public MainPage() - { - this.InitializeComponent(); - } - } -} diff --git a/UWPSample/Properties/AssemblyInfo.cs b/UWPSample/Properties/AssemblyInfo.cs deleted file mode 100644 index a9d41be..0000000 --- a/UWPSample/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("UWPSample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("UWPSample")] -[assembly: AssemblyCopyright("Copyright © 2021")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: ComVisible(false)] \ No newline at end of file diff --git a/UWPSample/Properties/Default.rd.xml b/UWPSample/Properties/Default.rd.xml deleted file mode 100644 index af00722..0000000 --- a/UWPSample/Properties/Default.rd.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/UWPSample/UWPSample.csproj b/UWPSample/UWPSample.csproj deleted file mode 100644 index 795a269..0000000 --- a/UWPSample/UWPSample.csproj +++ /dev/null @@ -1,182 +0,0 @@ - - - - - Debug - x86 - {F1A994D4-2E34-47B2-ACCC-9FB8F578300A} - AppContainerExe - Properties - UWPSample - UWPSample - en-US - UAP - 10.0.19041.0 - 10.0.17763.0 - 14 - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - true - false - - - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x86 - false - prompt - true - - - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x86 - false - prompt - true - true - - - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - ARM - false - prompt - true - - - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - ARM - false - prompt - true - true - - - true - bin\ARM64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - ARM64 - false - prompt - true - true - - - bin\ARM64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - ARM64 - false - prompt - true - true - - - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x64 - false - prompt - true - - - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x64 - false - prompt - true - true - - - PackageReference - - - - App.xaml - - - MainPage.xaml - - - - - - - Designer - - - - - - - - - - - - - - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - 2.1.2102.81 - - - 4.8.0 - - - 6.2.10 - - - - - {cdb0fea7-ae2f-4ba1-ad67-871b764cd05a} - UWPMasonry - - - - 14.0 - - - - \ No newline at end of file diff --git a/XamlMasonry/XamlMasonry.csproj b/XamlMasonry/XamlMasonry.csproj deleted file mode 100644 index d128736..0000000 --- a/XamlMasonry/XamlMasonry.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - net6.0-windows10.0.19041.0 - 10.0.17763.0 - MasonryWinUI - win10-x86;win10-x64;win10-arm64 - true - - - - - - - - diff --git a/azure-pipelines-mergetest.yml b/azure-pipelines-mergetest.yml index 4d84fd2..89868c6 100644 --- a/azure-pipelines-mergetest.yml +++ b/azure-pipelines-mergetest.yml @@ -13,26 +13,17 @@ variables: buildPlatform: 'Any CPU' buildConfiguration: 'Release' -steps: - -- task: UseDotNet@2 - displayName: Install Latest .Net Core 3.1.x - inputs: - packageType: 'sdk' - version: '3.1.x' - +steps: - task: NuGetToolInstaller@1 displayName: Install Latest Nuget -- task: NuGetCommand@2 - displayName: Nuget Restore +- task: DotNetCoreCLI@2 inputs: - restoreSolution: '$(solution)' - -- task: VSBuild@1 - displayName: Build Solution + command: 'restore' + projects: '*.sln' + +- task: DotNetCoreCLI@2 + displayName: dotnet build inputs: - solution: '$(solution)' - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - + projects: '$(solution)' + arguments: '--configuration=$(buildConfiguration) /p:Platform="$(buildPlatform)"' \ No newline at end of file diff --git a/azure-pipelines-release.yml b/azure-pipelines-release.yml index 59aa701..d08dbd6 100644 --- a/azure-pipelines-release.yml +++ b/azure-pipelines-release.yml @@ -19,37 +19,30 @@ variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' + netVersion: '6.0.x' + releaseSuffix: '' -name: 2.0.$(date:yyMM).$(date:dd)$(rev:r) +name: 2.1.$(date:yyMM).$(date:dd)$(rev:r) steps: - -- task: UseDotNet@2 - displayName: Install Latest .Net Core 3.1.x - inputs: - packageType: 'sdk' - version: '3.1.x' - - task: NuGetToolInstaller@1 displayName: Install Latest Nuget - -- task: NuGetCommand@2 - displayName: Nuget Restore - inputs: - restoreSolution: '$(solution)' -- task: VSBuild@1 - displayName: Build Solution +- task: DotNetCoreCLI@2 inputs: - solution: '$(solution)' - msbuildArgs: '/p:Version=$(Build.BuildNumber) /p:AssemblyVersion=$(Build.BuildNumber) /p:FileVersion=$(Build.BuildNumber)' - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - + command: 'restore' + projects: '$(solution)' + +- task: DotNetCoreCLI@2 + displayName: dotnet build + inputs: + projects: '$(solution)' + arguments: '--configuration=$(buildConfiguration) /p:Platform="$(buildPlatform)" /p:Version=$(Build.BuildNumber) /p:AssemblyVersion=$(Build.BuildNumber) /p:FileVersion=$(Build.BuildNumber) ' + - task: CopyFiles@2 displayName: Copy Files to $(build.artifactstagingdirectory) inputs: SourceFolder: '$(system.defaultworkingdirectory)' - Contents: '**/wpfmasonry.*.nupkg' + Contents: '**/Dsoft.*.nupkg' TargetFolder: '$(build.artifactstagingdirectory)' flattenFolders: true From 2f536b14c5adb3ad167751b0b5fbf25391d4833a Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Sun, 2 Jun 2024 20:52:50 +0100 Subject: [PATCH 23/26] Updated to use readme and pipelines --- Masonry/Masonry.csproj | 5 +++++ MasonryWinUI/MasonryWinUI.csproj | 24 ++++++++++++++++++++++++ azure-pipelines-release.yml | 4 ++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index b963e41..fd0b8cf 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -21,5 +21,10 @@ Updated to work with .NET 8.0 Copyright 2013 - 2016 Nikita Bernthaler + readme.md + + + + \ No newline at end of file diff --git a/MasonryWinUI/MasonryWinUI.csproj b/MasonryWinUI/MasonryWinUI.csproj index 1c3b2c4..77855ae 100644 --- a/MasonryWinUI/MasonryWinUI.csproj +++ b/MasonryWinUI/MasonryWinUI.csproj @@ -6,8 +6,32 @@ win-x86;win-x64;win-arm64 win10-x86;win10-x64;win10-arm64 true + true + true + true + LoDaTek.MasonryWinUI + Masonry for WinUI + MasonryWinUI + $(AssemblyName) ($(TargetFramework)) + newky2k + MIT + 2.1 + Fluid layout grid for WinUI + https://github.com/newky2k/WPF-Masonry + https://github.com/newky2k/WPF-Masonry + Git + WinUI Masonry Fluid + + Updated to work with .NET 8.0 + + Copyright 2024 LoDaTek Ltd + readme.md + + + + diff --git a/azure-pipelines-release.yml b/azure-pipelines-release.yml index d08dbd6..545eeab 100644 --- a/azure-pipelines-release.yml +++ b/azure-pipelines-release.yml @@ -22,7 +22,7 @@ variables: netVersion: '6.0.x' releaseSuffix: '' -name: 2.1.$(date:yyMM).$(date:dd)$(rev:r) +name: 3.0.$(date:yyMM).$(date:dd)$(rev:r) steps: - task: NuGetToolInstaller@1 displayName: Install Latest Nuget @@ -42,7 +42,7 @@ steps: displayName: Copy Files to $(build.artifactstagingdirectory) inputs: SourceFolder: '$(system.defaultworkingdirectory)' - Contents: '**/Dsoft.*.nupkg' + Contents: '**/*.nupkg' TargetFolder: '$(build.artifactstagingdirectory)' flattenFolders: true From ef0b8f2ce6fc444de9167ba39fb97b396c988e63 Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Sun, 2 Jun 2024 21:06:01 +0100 Subject: [PATCH 24/26] Updated build config --- MasonryWinUI/MasonryWinUI.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MasonryWinUI/MasonryWinUI.csproj b/MasonryWinUI/MasonryWinUI.csproj index 77855ae..cc69299 100644 --- a/MasonryWinUI/MasonryWinUI.csproj +++ b/MasonryWinUI/MasonryWinUI.csproj @@ -26,6 +26,8 @@ Copyright 2024 LoDaTek Ltd readme.md + true + true From 4a29c3d6b494c0ff873b7a71bb80b23cc894e334 Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Sun, 1 Dec 2024 19:29:31 +0000 Subject: [PATCH 25/26] Updated to .NET 9.0 --- Masonry.Example/App.xaml | 6 +++++- Masonry.Example/Masonry.Example.csproj | 2 +- Masonry/Masonry.csproj | 6 +++--- MasonryWinUI.Example/MasonryWinUI.Example.csproj | 2 +- MasonryWinUI/MasonryWinUI.csproj | 2 +- azure-pipelines-mergetest.yml | 7 +++++++ azure-pipelines-release.yml | 8 +++++++- 7 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Masonry.Example/App.xaml b/Masonry.Example/App.xaml index 3b7deca..62fcc0d 100644 --- a/Masonry.Example/App.xaml +++ b/Masonry.Example/App.xaml @@ -3,6 +3,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="Shell.xaml"> - + + + + + \ No newline at end of file diff --git a/Masonry.Example/Masonry.Example.csproj b/Masonry.Example/Masonry.Example.csproj index a2e6fc0..263cfed 100644 --- a/Masonry.Example/Masonry.Example.csproj +++ b/Masonry.Example/Masonry.Example.csproj @@ -2,7 +2,7 @@ WinExe - net8.0-windows + net9.0-windows disable enable true diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index fd0b8cf..4f2a62e 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -1,6 +1,6 @@  - net461;net8-windows + net461;net8-windows;net9-windows true true true @@ -12,13 +12,13 @@ Lizzaran newky2k MIT 2.1 - Fluid layout grid for WPF (.NET 8 and .Net Framework) + Fluid layout grid for WPF (.NET 8+ and .Net Framework) https://github.com/newky2k/WPF-Masonry https://github.com/newky2k/WPF-Masonry Git WPF Masonry Fluid - Updated to work with .NET 8.0 + Updated to work with .NET 9.0 Copyright 2013 - 2016 Nikita Bernthaler readme.md diff --git a/MasonryWinUI.Example/MasonryWinUI.Example.csproj b/MasonryWinUI.Example/MasonryWinUI.Example.csproj index afa6ded..3f6657a 100644 --- a/MasonryWinUI.Example/MasonryWinUI.Example.csproj +++ b/MasonryWinUI.Example/MasonryWinUI.Example.csproj @@ -1,7 +1,7 @@ WinExe - net8.0-windows10.0.19041.0 + net9.0-windows10.0.19041.0 10.0.17763.0 MasonryWinUI.Example app.manifest diff --git a/MasonryWinUI/MasonryWinUI.csproj b/MasonryWinUI/MasonryWinUI.csproj index cc69299..5804f98 100644 --- a/MasonryWinUI/MasonryWinUI.csproj +++ b/MasonryWinUI/MasonryWinUI.csproj @@ -1,6 +1,6 @@  - net8.0-windows10.0.19041.0 + net8.0-windows10.0.19041.0;net9.0-windows10.0.19041.0; 10.0.17763.0 MasonryWinUI win-x86;win-x64;win-arm64 diff --git a/azure-pipelines-mergetest.yml b/azure-pipelines-mergetest.yml index 89868c6..f61a9b8 100644 --- a/azure-pipelines-mergetest.yml +++ b/azure-pipelines-mergetest.yml @@ -12,11 +12,18 @@ variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' + netVersion: '9.x' steps: - task: NuGetToolInstaller@1 displayName: Install Latest Nuget +- task: UseDotNet@2 + displayName: 'Install .NET sdk' + inputs: + packageType: 'sdk' + version: $(netVersion) + - task: DotNetCoreCLI@2 inputs: command: 'restore' diff --git a/azure-pipelines-release.yml b/azure-pipelines-release.yml index 545eeab..416b43a 100644 --- a/azure-pipelines-release.yml +++ b/azure-pipelines-release.yml @@ -19,7 +19,7 @@ variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' - netVersion: '6.0.x' + netVersion: '9.x' releaseSuffix: '' name: 3.0.$(date:yyMM).$(date:dd)$(rev:r) @@ -27,6 +27,12 @@ steps: - task: NuGetToolInstaller@1 displayName: Install Latest Nuget +- task: UseDotNet@2 + displayName: 'Install .NET sdk' + inputs: + packageType: 'sdk' + version: $(netVersion) + - task: DotNetCoreCLI@2 inputs: command: 'restore' From a05748bbb325c2d36ee1cb65cbb5f64a4b9c62d5 Mon Sep 17 00:00:00 2001 From: David Humphreys Date: Thu, 13 Mar 2025 20:06:23 +0000 Subject: [PATCH 26/26] Updated to WPF Windows 10 --- Masonry/Masonry.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Masonry/Masonry.csproj b/Masonry/Masonry.csproj index 4f2a62e..eb8035a 100644 --- a/Masonry/Masonry.csproj +++ b/Masonry/Masonry.csproj @@ -1,6 +1,6 @@  - net461;net8-windows;net9-windows + net461;net8-windows;net9-windows;net8.0-windows10.0.18362;net9.0-windows10.0.18362; true true true