From 43646f7bbc29cd0353a1e51cebbcfd31ad38b2c6 Mon Sep 17 00:00:00 2001 From: Jesse Collins Date: Wed, 7 May 2025 16:30:22 -0700 Subject: [PATCH] Working demo/prototype for some simple Xaml in an RNW app --- packages/sample-app-fabric/App.tsx | 20 +- .../packages.lock.json | 12 + .../windows/SampleAppFabric.sln | 15 + .../SampleAppFabric/SampleAppFabric.cpp | 6 + .../SampleAppFabric/SampleAppFabric.vcxproj | 6 + .../SampleAppFabric/packages.lock.json | 11 + .../windows/SampleAppFabric/pch.h | 1 + vnext/Microsoft.ReactNative.Xaml.sln | 37 + vnext/Microsoft.ReactNative.Xaml/App.idl | 19 + .../FabricXamlControl.cpp | 164 +++++ .../FabricXamlControl.h | 259 +++++++ .../Microsoft.ReactNative.Xaml.def | 3 + .../Microsoft.ReactNative.Xaml.vcxproj | 181 +++++ ...Microsoft.ReactNative.Xaml.vcxproj.filters | 31 + .../PropertySheet.props | 17 + .../ReactPackageProvider.cpp | 17 + .../ReactPackageProvider.h | 18 + .../ReactPackageProvider.idl | 9 + .../XamlApplication.cpp | 56 ++ .../XamlApplication.h | 53 ++ vnext/Microsoft.ReactNative.Xaml/XamlHost.cpp | 76 +++ vnext/Microsoft.ReactNative.Xaml/XamlHost.h | 9 + .../XamlMetaDataProvider.cpp | 4 + .../XamlMetaDataProvider.g.cpp | 13 + .../XamlMetaDataProvider.g.h | 52 ++ .../XamlMetaDataProvider.h | 58 ++ .../XamlMetaDataProvider.idl | 9 + .../XamlTypeInfo.Impl.g.cpp | 640 ++++++++++++++++++ .../XamlTypeInfo.g.cpp | 538 +++++++++++++++ .../XamlTypeInfo.xaml.g.h | 225 ++++++ .../packages.newarch.lock.json | 98 +++ vnext/Microsoft.ReactNative.Xaml/pch.cpp | 1 + vnext/Microsoft.ReactNative.Xaml/pch.h | 27 + vnext/Microsoft.ReactNative.Xaml/resource.h | 16 + .../ContentIslandComponentView.cpp | 7 +- ...ft.ReactNative.Cpp.ProjectReferences.props | 7 + .../components/rnwcore/ComponentDescriptors.h | 1 + .../components/rnwcore/EventEmitters.cpp | 1 + .../react/components/rnwcore/EventEmitters.h | 7 + .../react/components/rnwcore/Props.cpp | 7 + .../codegen/react/components/rnwcore/Props.h | 10 + .../react/components/rnwcore/ShadowNodes.cpp | 1 + .../react/components/rnwcore/ShadowNodes.h | 11 + .../codegen/react/components/rnwcore/States.h | 12 + .../react/components/rnwcore/XamlHost.g.h | 200 ++++++ .../Xaml/FabricXamlControl.windows.js | 26 + .../Components/Xaml/XamlHost.windows.js | 7 + vnext/src-win/Libraries/platform-types.d.ts | 1 + vnext/src-win/index.windows.js | 4 + .../Xaml/XamlHostNativeComponent.js | 19 + 50 files changed, 3018 insertions(+), 4 deletions(-) create mode 100644 vnext/Microsoft.ReactNative.Xaml.sln create mode 100644 vnext/Microsoft.ReactNative.Xaml/App.idl create mode 100644 vnext/Microsoft.ReactNative.Xaml/FabricXamlControl.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/FabricXamlControl.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/Microsoft.ReactNative.Xaml.def create mode 100644 vnext/Microsoft.ReactNative.Xaml/Microsoft.ReactNative.Xaml.vcxproj create mode 100644 vnext/Microsoft.ReactNative.Xaml/Microsoft.ReactNative.Xaml.vcxproj.filters create mode 100644 vnext/Microsoft.ReactNative.Xaml/PropertySheet.props create mode 100644 vnext/Microsoft.ReactNative.Xaml/ReactPackageProvider.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/ReactPackageProvider.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/ReactPackageProvider.idl create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlApplication.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlApplication.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlHost.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlHost.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlMetaDataProvider.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlMetaDataProvider.g.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlMetaDataProvider.g.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlMetaDataProvider.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlMetaDataProvider.idl create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlTypeInfo.Impl.g.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlTypeInfo.g.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/XamlTypeInfo.xaml.g.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/packages.newarch.lock.json create mode 100644 vnext/Microsoft.ReactNative.Xaml/pch.cpp create mode 100644 vnext/Microsoft.ReactNative.Xaml/pch.h create mode 100644 vnext/Microsoft.ReactNative.Xaml/resource.h create mode 100644 vnext/codegen/react/components/rnwcore/XamlHost.g.h create mode 100644 vnext/src-win/Libraries/Components/Xaml/FabricXamlControl.windows.js create mode 100644 vnext/src-win/Libraries/Components/Xaml/XamlHost.windows.js create mode 100644 vnext/src-win/src/private/specs/components/Xaml/XamlHostNativeComponent.js diff --git a/packages/sample-app-fabric/App.tsx b/packages/sample-app-fabric/App.tsx index 125fe1b98eb..dbcffad61d3 100644 --- a/packages/sample-app-fabric/App.tsx +++ b/packages/sample-app-fabric/App.tsx @@ -25,6 +25,14 @@ import { ReloadInstructions, } from 'react-native/Libraries/NewAppScreen'; +import {XamlHost} from 'react-native-windows'; + +import { + StackPanel, + Button, + CalendarView, +} from 'react-native-windows/Libraries/Components/Xaml/FabricXamlControl'; + type SectionProps = PropsWithChildren<{ title: string; }>; @@ -77,9 +85,17 @@ function App(): React.JSX.Element { backgroundColor: isDarkMode ? Colors.black : Colors.white, }}>
- Edit App.tsx to change this - screen and then come back to see your edits. + Edit App.tsx to change this. + I'll try showing some Xaml here:
+ + +