microsoft / xaml-standard

XAML Standard : a set of principles that drive XAML dialect alignment
Other
805 stars 50 forks source link

Enable extensible points for XAML Standard - custom mappings #151

Open stefanov-stefan opened 7 years ago

stefanov-stefan commented 7 years ago

Hi guys,

what I mean by this is that there would be a way for one to create custom control mapping which is external to the standard - e.g. definable, instead of being hard coded. Such would be valuable in cases of third party controls where there is control "MyControl" in WPF and there is "XControl" in UWP so, in order to use the Standard, I need to be able to do this mapping on my own.

It goes without saying that besides the control, one should be able to map its inners as well e.g. "Text" property of MyControl to "Content" property of XControl.

monkeynoises commented 7 years ago

There's a lot of assumptions on the availability of the "native" controls that are and will be available on the target platform - what happens if some controls get deprecated in the future?....or their behaviour changes in subtle ways......what if a newer better control gets added...which could be taken advantage of...but all your "old" "apps" are still mapping to the legacy version - you are then forcing apps to be re-released....because their assumptions on platforms at a certain point in time, can't be worked around.

I would add to the above and say the "mappings" should be external in some way.

If the "mapping" was definable, instead of hard-coded/baked into the Standard....you could do other things....like mappings for other purposes e.g. for accessibility perhaps?....also how about allowing a 1 to many mapping too?.....i.e. if the target platform doesn't quite have the whole behaviour in 1 control, but does in 2 when used together....then that's what you do.

Mike-E-angelo commented 7 years ago

Agreed on the metadata ("declarative") vs. configuration ("imperative"). In XML you could declare an element's name via metadata. This tightly-coupled behavior with POCOs (making them no longer "plain") and made it a pain to work with (or at the very least polluted your code). Unfortunately, this practice continued into WPF and UWP. For instance, the ContentPropertyAttribute would be awesome to have this configured somehow outside of metadata.

stefanov-stefan commented 7 years ago

@monkeynoises external definition is precisely what I meant. Updated my post with the clarification. Thanks!