diff --git a/MergedWinMD/Directory.Build.props b/MergedWinMD/Directory.Build.props index fd7ced7281..e9b1eab67c 100644 --- a/MergedWinMD/Directory.Build.props +++ b/MergedWinMD/Directory.Build.props @@ -1,4 +1,4 @@ - + @@ -57,6 +57,9 @@ --> + + diff --git a/Samples/TableViewApp/README.md b/Samples/TableViewApp/README.md new file mode 100644 index 0000000000..339210453c --- /dev/null +++ b/Samples/TableViewApp/README.md @@ -0,0 +1,77 @@ +# TableView consumer matrix + +Four minimal apps that consume `TableView` the way a real customer would — **C# and C++, packaged and +unpackaged** — to prove the control works in every host shape without app-side workarounds. + +| | Packaged | Unpackaged | +|---|---|---| +| **C#** | `TableViewAppCsPackaged` | `TableViewAppCsUnpackaged` | +| **C++** | `TableViewAppCppPackaged` | `TableViewAppCppUnpackaged` | + +Modelled on the [ChartApp](../ChartApp) samples, which are the existing pattern in this repo for a +separately-built control set. + +## What they prove + +Each app references `Microsoft.WindowsAppSDK.WinUI` **and nothing else**. `App.xaml` merges +`XamlControlsResources` plus `TabularControlsResources`. There is no projection regeneration, no +manifest injection, no theme resources compiled from the control source, no staged DLL, and no type +seed — the control resolves its own default style and theme resources from the package. + +`TabularControlsResources` is Tabular's own theme-resource dictionary, the exact analogue of +`XamlControlsResources` for MUXC, and merging it is a normal part of consuming the control set +rather than a workaround. It is required: `TableView`'s column-header style resolves +`SortIndicatorForeground` from it, and `SortIndicator` ships in the Tabular DLL rather than in MUXC +(`controls/Tabular.ProjectImports.targets` is the only importer of `SortIndicator.vcxitems`). +Without the merge the app throws `XamlParseException 0x802B000A` — "Cannot find a Resource with the +Name/Key SortIndicatorForeground" — during the first layout pass, which surfaces as a +`0xC000027B` stowed exception a few seconds after launch. + +Each app instantiates `TableView` **twice on purpose**: + +- once from **markup**, which exercises XamlTypeInfo, the metadata provider and XAML-driven activation; +- once from **code-behind**, which exercises direct WinRT activation with no markup involved. + +Those are separate paths and either can fail alone, so a conformance check wants both. + +## Build and run + +``` +.\initrun.ps1 msb /restore Samples\TableViewApp\TableViewAppCsPackaged\TableViewAppCsPackaged.csproj /p:Platform=x64 +``` + +To test a locally built control, pack the component and override the version: + +``` +.\pack.component.cmd /version 3.0.0-mylocal +... /p:WinUIVersion=3.0.0-mylocal +``` + +The unpackaged apps run straight from their output directory. The packaged apps produce a loose +layout; register it with `Add-AppxPackage -Register \AppxManifest.xml` and launch from Start. + +## Why the C# and C++ apps bind differently + +The C# apps use `TableViewTextColumn.Binding` with a classic `{Binding}` against a plain `Person` +class. The C++ apps use `TableViewTemplateColumn.CellTemplate` with `x:Bind` against a `Person` +runtimeclass declared in `MainWindow.idl`. + +That difference is a **C++/WinRT data-binding rule, not a control limitation**. Classic `{Binding}` +resolves properties through reflection in .NET, but C++/WinRT has no reflection: it needs an +`IXamlType`, which the XAML compiler emits only for types it encounters **in markup**, or an +explicit `ICustomPropertyProvider` implementation. A data type constructed purely from code has +neither, so `{Binding}` silently resolves nothing and every cell renders empty while headers, rows, +grid lines and theming all look perfectly correct. + +`x:Bind` compiles the property access at build time, needs no runtime type information, and is the +right default for a C++/WinRT consumer. + +## Preview-API warnings are left visible here + +`TableView` is `[MUX_PREVIEW]`, so C# usage raises `CS8305` and XAML usage raises `WMC1501` +("for evaluation purposes only"). These apps **do not** suppress them: they are small, the warning +count stays low, and a consumer reading a conformance sample should see that the API is preview. + +`TableViewSampleApp` takes the opposite choice deliberately — it exercises the whole API surface, so +un-suppressed `CS8305` fires 324 times and would bury every other warning. That difference is +intentional, not an oversight. diff --git a/Samples/TableViewApp/TableViewApp.sln b/Samples/TableViewApp/TableViewApp.sln new file mode 100644 index 0000000000..37afd9106b --- /dev/null +++ b/Samples/TableViewApp/TableViewApp.sln @@ -0,0 +1,135 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.37314.3 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TableViewAppCppUnpackaged", "TableViewAppCppUnpackaged\TableViewAppCppUnpackaged.vcxproj", "{050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TableViewAppCppPackaged", "TableViewAppCppPackaged\TableViewAppCppPackaged.vcxproj", "{1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TableViewAppCsUnpackaged", "TableViewAppCsUnpackaged\TableViewAppCsUnpackaged.csproj", "{F9AE50FC-FACF-4E88-8C05-27DF41902470}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TableViewAppCsPackaged", "TableViewAppCsPackaged\TableViewAppCsPackaged.csproj", "{B43A3294-ED51-4784-9957-E7D033330B05}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|ARM64.Build.0 = Debug|ARM64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|Win32.ActiveCfg = Debug|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|Win32.Build.0 = Debug|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|x64.ActiveCfg = Debug|x64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|x64.Build.0 = Debug|x64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|x86.ActiveCfg = Debug|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Debug|x86.Build.0 = Debug|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|ARM64.ActiveCfg = Release|ARM64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|ARM64.Build.0 = Release|ARM64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|ARM64EC.Build.0 = Release|ARM64EC + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|Win32.ActiveCfg = Release|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|Win32.Build.0 = Release|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|x64.ActiveCfg = Release|x64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|x64.Build.0 = Release|x64 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|x86.ActiveCfg = Release|Win32 + {050FC711-CCFB-4BB4-B771-D4C35E8D5FCE}.Release|x86.Build.0 = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64.Build.0 = Debug|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|ARM64EC.Deploy.0 = Debug|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|Win32.ActiveCfg = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|Win32.Build.0 = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|Win32.Deploy.0 = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x64.ActiveCfg = Debug|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x64.Build.0 = Debug|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x64.Deploy.0 = Debug|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x86.ActiveCfg = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x86.Build.0 = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Debug|x86.Deploy.0 = Debug|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64.ActiveCfg = Release|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64.Build.0 = Release|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64.Deploy.0 = Release|ARM64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64EC.Build.0 = Release|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|ARM64EC.Deploy.0 = Release|ARM64EC + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|Win32.ActiveCfg = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|Win32.Build.0 = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|Win32.Deploy.0 = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x64.ActiveCfg = Release|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x64.Build.0 = Release|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x64.Deploy.0 = Release|x64 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x86.ActiveCfg = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x86.Build.0 = Release|Win32 + {1930FFBA-85CD-4E12-BBF1-23CB28D47D4F}.Release|x86.Deploy.0 = Release|Win32 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|ARM64.Build.0 = Debug|ARM64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|Win32.ActiveCfg = Debug|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|Win32.Build.0 = Debug|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|x64.ActiveCfg = Debug|x64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|x64.Build.0 = Debug|x64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|x86.ActiveCfg = Debug|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Debug|x86.Build.0 = Debug|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|ARM64.ActiveCfg = Release|ARM64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|ARM64.Build.0 = Release|ARM64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|ARM64EC.Build.0 = Release|ARM64EC + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|Win32.ActiveCfg = Release|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|Win32.Build.0 = Release|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|x64.ActiveCfg = Release|x64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|x64.Build.0 = Release|x64 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|x86.ActiveCfg = Release|x86 + {F9AE50FC-FACF-4E88-8C05-27DF41902470}.Release|x86.Build.0 = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64.Build.0 = Debug|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|ARM64EC.Deploy.0 = Debug|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|Win32.ActiveCfg = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|Win32.Build.0 = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|Win32.Deploy.0 = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x64.ActiveCfg = Debug|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x64.Build.0 = Debug|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x64.Deploy.0 = Debug|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x86.ActiveCfg = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x86.Build.0 = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Debug|x86.Deploy.0 = Debug|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64.ActiveCfg = Release|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64.Build.0 = Release|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64.Deploy.0 = Release|ARM64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64EC.Build.0 = Release|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|ARM64EC.Deploy.0 = Release|ARM64EC + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|Win32.ActiveCfg = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|Win32.Build.0 = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|Win32.Deploy.0 = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x64.ActiveCfg = Release|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x64.Build.0 = Release|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x64.Deploy.0 = Release|x64 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x86.ActiveCfg = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x86.Build.0 = Release|x86 + {B43A3294-ED51-4784-9957-E7D033330B05}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {09593217-0E5B-4DFD-8DF3-16E5A2374FB9} + EndGlobalSection +EndGlobal diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml new file mode 100644 index 0000000000..ad698ec146 --- /dev/null +++ b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.cpp b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.cpp new file mode 100644 index 0000000000..83c3826d27 --- /dev/null +++ b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.cpp @@ -0,0 +1,29 @@ +#include "pch.h" +#include "App.xaml.h" +#include "MainWindow.xaml.h" + +using namespace winrt; +using namespace Microsoft::UI::Xaml; + +namespace winrt::TableViewAppCppPackaged::implementation +{ + App::App() + { +#if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION + UnhandledException([](IInspectable const&, UnhandledExceptionEventArgs const& e) + { + if (IsDebuggerPresent()) + { + auto errorMessage = e.Message(); + __debugbreak(); + } + }); +#endif + } + + void App::OnLaunched([[maybe_unused]] LaunchActivatedEventArgs const& e) + { + window = make(); + window.Activate(); + } +} diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.h b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.h new file mode 100644 index 0000000000..dd5e8d12bd --- /dev/null +++ b/Samples/TableViewApp/TableViewAppCppPackaged/App.xaml.h @@ -0,0 +1,16 @@ +#pragma once + +#include "App.xaml.g.h" + +namespace winrt::TableViewAppCppPackaged::implementation +{ + struct App : AppT + { + App(); + + void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const&); + + private: + winrt::Microsoft::UI::Xaml::Window window{ nullptr }; + }; +} diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/LockScreenLogo.scale-200.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000..7440f0d4bf Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/LockScreenLogo.scale-200.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/SplashScreen.scale-200.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000..32f486a867 Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/SplashScreen.scale-200.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square150x150Logo.scale-200.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000..53ee3777ea Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square150x150Logo.scale-200.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.scale-200.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000..f713bba67f Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.scale-200.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000..dc9f5bea0c Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/StoreLogo.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/StoreLogo.png new file mode 100644 index 0000000000..a4586f26bd Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/StoreLogo.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Wide310x150Logo.scale-200.png b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000..8b4a5d0dd5 Binary files /dev/null and b/Samples/TableViewApp/TableViewAppCppPackaged/Assets/Wide310x150Logo.scale-200.png differ diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.idl b/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.idl new file mode 100644 index 0000000000..34f3b07630 --- /dev/null +++ b/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.idl @@ -0,0 +1,18 @@ +namespace TableViewAppCppPackaged +{ + [default_interface] + runtimeclass Person + { + Person(); + String Name; + Int32 Age; + String AgeText{ get; }; + } + + [default_interface] + runtimeclass MainWindow : Microsoft.UI.Xaml.Window + { + MainWindow(); + Windows.Foundation.Collections.IObservableVector People{ get; }; + } +} \ No newline at end of file diff --git a/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.xaml b/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.xaml new file mode 100644 index 0000000000..dfea6905c5 --- /dev/null +++ b/Samples/TableViewApp/TableViewAppCppPackaged/MainWindow.xaml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + +