Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add DataTemplate extensions to allow typesafe binding just like BindableObject #232

Closed
wants to merge 5 commits into from

Conversation

scastria
Copy link
Contributor

@scastria scastria commented Jun 20, 2016

Description of Change

Allow typesafe binding on DataTemplate just like we have for BindableObject. This allows better support for refactoring such that when a bound property name changes, it will be found in the lambda expressions and be updated too.

My first attempt added these extension methods to DataTemplateExtensions.cs. Then I noticed that there was already an extension method in TemplateExtensions.cs. Therefore, I moved my changes to TemplateExtensions.cs to better match what was already there.

API Changes

Added:

  • DataTemplate.SetBinding(this DataTemplate self, BindableProperty targetProperty, string path, BindingMode mode = BindingMode.Default, IValueConverter converter = null, string stringFormat = null);
  • DataTemplate.SetBinding(this DataTemplate self, BindableProperty targetProperty, Expression<Func<TSource, object>> sourceProperty, BindingMode mode = BindingMode.Default, IValueConverter converter = null, string stringFormat = null);

PR Checklist

  • [ X] Has tests (if omitted, state reason in description)
  • [ X] Rebased on top of master at time of PR
  • Changes adhere to coding standard
  • Consolidate commits as makes sense

@jassmith
Copy link

After internal debate we have opted not to include this due to its usage of Expression which expands out quite poorly in iOS AOT land resulting in bloating of binary sizes.

@jassmith jassmith closed this Jul 18, 2016
@scastria
Copy link
Contributor Author

Can you elaborate a bit on why BindableObject's use of the Expression does not result in bloated binaries but this change would?

I suppose I could add these extension methods in all of my apps to avoid using simple binding strings, but I was hoping to get this added to Forms so everybody can avoid simple strings which are not refactor safe.

mattleibow added a commit that referenced this pull request Jan 28, 2021
* Added DateTime to preferences. Fixes #192
 - also properly using overloads

* Added some unit tests

* Added the docs for the new Preferences APIs
mattleibow pushed a commit that referenced this pull request Jan 28, 2021
* GH-221: Add iOS SecAccessible properties (#223)

* Address #221, use AfterFirstUnlockThisDeviceOnly to match other platforms. Although allow a platform specific override to set accessible state.

* Add tests

* Added iOS specific prop to set SecAccessible

* Default to AfterFirstUnlock on iOS SecureStorage

* A few fixes for the release. (#228)

* Setting the correct flags for Chrome Tabs. Fixes #225

* Make sure that there is data to decrypt before starting. Fixes #226

* Fixes for TTS. Fixes #227

* A bit of the fixes for emails on iOS. Relates to #224

* Update the email bit for iOS #224

* Cleaning up the code #224

* Make sure to set the email properties. Fixes #229

* Update SDK Extras

This fixes a lot of references that were required on android that aren't.

* Update Readme with Installation information. (#237)

* Update Readme with Installation information.

* Update README.md

* Update README.md

* Adding the initial work to get Tizen started. #23

* Revert "Adding the initial work to get Tizen started. #23"

This reverts commit 58b6041.

* Update the docs with the latest APIs (#233)

Add docs for SecAccessible

* GH-245: Add Orientation Sensor (#249)

* Add Orientation Sensor

* Add Orientation Sensor

* Remove .csproj clutter

* "orientationsensor" --> "orientation sensor" or just "orientation"

* GH-192: Added DateTime to Preferences (#232)

* Added DateTime to preferences. Fixes #192
 - also properly using overloads

* Added some unit tests

* Added the docs for the new Preferences APIs

* Update Readme with Device Display Information

Added link to Current Features for Device Display Information

* Fixes #258 and Fixes #255 (#259)

* Fixes #258
* put vectors nuget everywhere.
* NuGet is broken - https://developercommunity.visualstudio.com/content/problem/232996/warning-nu1603-runtimenativesystemiocompression-41.html
* The NuGet doesn't add the assembly references from the GAC
* We need to use a later version of the iOS SDK

* Fix typo (#274)

* Fix up null checks when getting lask known location.

* Additional Null checks

* GH-240 Add IsMainThread detection API (#277)

* Add IsMainThread detection API

* Add platform tests for main thread

* Update docs and add more platform tests

* iOS secure storage simulator tests (#247) (#278)

* iOS secure storage simulator tests (#247)

* Remove line that skips test on virtual devices

* Adding keychain-access-groups in Entitlements.plist

* Setting CodeSign entitlements for Debug configuration

* Making same entitlement.plist changes for iOS sample

* Removing specific code sign key

* Removing physical device trait for iOS SecureStorageTests

* Update DeviceTests.iOS.csproj

* Update Samples.iOS.csproj

* Add configs for codesign on release

* Fixes #181 Allowing setting of calibration for heading. (#282)

* GH-254 Update Support Packages, Forms, and Reference Vectors (#279)

* Update Support Packages, Forms, and Reference Vectors

* Bump targetsdk

* Fix android build :)

* Fix build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants