Comments (1)
Good bug. RNW allows view managers to produce FrameworkElement
. Run and other things are not FEs, so react-native-xaml fakes this by wrapping it in a ContentControl, and when it is asked to associate a child to its parent, it unwraps the non-FE child and does its magic.
To determine how to set a property, we have a map of property names and a lambda that checks whether the entry is applicable to a certain object or not. This check basically does a cast to check if the object you pass in is of the type that the property is defined in.
fontSize
is special in that the property is defined in several types:
{ MAKE_KEY("fontSize"), AsType<winrt::Windows::UI::Xaml::Controls::ContentPresenter>, []() { return winrt::Windows::UI::Xaml::Controls::ContentPresenter::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
{ MAKE_KEY("fontSize"), AsType<winrt::Windows::UI::Xaml::Controls::Control>, []() { return winrt::Windows::UI::Xaml::Controls::Control::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
{ MAKE_KEY("fontSize"), AsType<winrt::Windows::UI::Xaml::Controls::FontIcon>, []() { return winrt::Windows::UI::Xaml::Controls::FontIcon::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
{ MAKE_KEY("fontSize"), AsType<winrt::Windows::UI::Xaml::Controls::RichTextBlock>, []() { return winrt::Windows::UI::Xaml::Controls::RichTextBlock::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
{ MAKE_KEY("fontSize"), AsType<winrt::Windows::UI::Xaml::Controls::TextBlock>, []() { return winrt::Windows::UI::Xaml::Controls::TextBlock::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
{ MAKE_KEY("fontSize"), AsUnwrappedType<winrt::Windows::UI::Xaml::Documents::TextElement>, []() { return winrt::Windows::UI::Xaml::Documents::TextElement::FontSizeProperty(); }, SetPropValue<double>, ViewManagerPropertyType::Number },
What is happening is that we come in with the Run's associated ContentControl wrapper, and we hit the second entry in the table that says "sure, I know how to set a Control's fontSize
", and we stop looking.
I think the fix is to re-sort this table by property name first (as it is today), but then sort by specificity (the TextElement
cast should come before the Control
one)
from react-native-xaml.
Related Issues (20)
- Allow overriding package version through ExperimentalFeatures.props HOT 4
- Add way to use virtualization with list controls HOT 4
- This repo is missing important files
- RNX views don't implement Constructor<NativeMethods> HOT 2
- ContentDialog Opens Only Once HOT 3
- Build error in example/windows/example.sln with Microsoft.ReactNative, 'Mso::MustBeNoExceptVoidFunctor: not a noexcept callable functor returning void' HOT 3
- Import WinUI package only if OverrideWinUIPackage is not set to "true"
- Allow user to override CppWinRT version
- Update projects to newer RNW versions HOT 3
- Extend `RunReactNativeXamlCodeGen` target to support multiple WinMDs HOT 1
- Update docs to clarify difference between using WinUI and system XAML components HOT 4
- JS Promises are not being processed and RN app crashes when changing pages/rendering new components HOT 1
- Package Failing to Build: No Matching Overload "SetPropValue" HOT 5
- Add support to specify ItemsPanel for ItemsControl elements such as GridView HOT 2
- MSB4011 warning when building HOT 3
- Upgrade to RN and RNW 0.72
- Support core components in SplitView / NavigationView HOT 2
- Crash when running under Application Verifier
- Remove checked in pfx files
- Update RNX to target RNW 0.73
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-native-xaml.