-
Notifications
You must be signed in to change notification settings - Fork 401
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
[BUG] Binding does not work for Platform dependent Behaviors #795
Comments
I believe it's the default behavior, if I'm not wrong, since XF the bindingContext isn't passed to behavior automatically, if need to the BindingContext by your self, or use the |
if I see a control with a binding property, as its consumer I would expect binding to ViewModel work out of the box. Strange to hear that it's a default behavior, I feel something is definitely off here, either in implementation of community toolkit controls, or Maui core lib, or Maui design as a framework |
@YMichurin it's been this way since XF. from docs
|
With that, I'll close this issue. Since it's this way by design |
The binding context wasnt being set on the platform behavior. We will need to understand the impact of this going forwards, see CommunityToolkit#795
The binding context wasnt being set on the platform behavior. We will need to understand the impact of this going forwards, see CommunityToolkit#795
The binding context wasnt being set on the platform behavior. We will need to understand the impact of this going forwards, see CommunityToolkit#795
The binding context wasnt being set on the platform behavior. We will need to understand the impact of this going forwards, see CommunityToolkit#795
* init * code style * android bits * code style * dumb sample to test * added a11y and initialization * code style * improved sample * code style * protect against NRE * windows implementation * code style * Added comments to all public methods to enable builds without errors * Missed some docs required for building * Touch effect maui (#1326) * Fixed some issues in Android implementation * Added iOS implementation for TouchBehavior * Reformatted code * Removed duplicated extension methods --------- Co-authored-by: Christian Rendl <cr@mutor.at> * Bringing touch-effect up to date with main (#1383) * Popup v6 windows (#1086) Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> Co-authored-by: Shaun Lawrence <shaunrlawrence@gmail.com> * ♻️ [Housekeeping] Fixed GravatarImageSourceTests.TestDefaultStream (#1335) * [housekeeping] Automated PR to fix formatting errors (#1327) * Fix popup margin on iOS (#1329) * Bump NuGet.Protocol from 6.6.1 to 6.7.0 in /samples (#1330) * Use fully qualified namespace for Color reference in TextToColorGenerator (#1332) * Use fully qualified namespace for Color reference in TextToColorGenerator to prevent collisions This change should prevent "ambiguous reference" error to occur when other packages are included in a MAUI project that provide their own Color objects * added global prefix to be safer --------- Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> * Code cleanup and preparation for the next release (breaking changes) (#1324) * Code cleanup and preparation for .net 8 * Update CompareConverter.shared.cs * Revert global.json * More CleanUps * Remove redundant TrySetCanceled and rely on speech recognition result * Update Formatting --------- Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> * Fix Gestures on Popup on ios (#1342) * Fix Gestures on Popup on ios * don't query type cast directly * Code for AddLogicalChild (.NET 8) * reduce changes * setting the parent fixes the BindingContext of the view * Revert "setting the parent fixes the BindingContext of the view" This reverts commit 0a64b56. * reduce changes * simplify code * fixing build * assigned Element to contentPage.Parent --------- Co-authored-by: pedrojesus <pedrojesus.cefet@gmail.com> * `global.json`: Change `"rollForward": "latestMajor",` -> `"rollForward": "latestFeature"`. (#1338) Update global.json * Bump Microsoft.NET.Test.Sdk from 17.7.0 to 17.7.1 in /samples (#1348) Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.7.0 to 17.7.1. - [Release notes](https://github.com/microsoft/vstest/releases) - [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md) - [Commits](microsoft/vstest@v17.7.0...v17.7.1) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * 632 bug avatar view clipping on windows (#1344) * Resolves issue on Windows where the splash screen icon is not found. * Resolves an issue with the 'Ratings' sample for AvatarView. * Spaces and not tabs * Spaces and not tabs * Changed MauiImage to point to Images folder. * Changed splash for Windows to be Resize=False * Typo in name of MauiImage * Try to prevent locking. * Bump Microsoft.CodeAnalysis from 4.6.0 to 4.7.0 in /samples (#1355) * Bump Microsoft.CodeAnalysis.CSharp.Workspaces from 4.6.0 to 4.7.0 in /samples (#1357) * Bump FluentAssertions from 6.11.0 to 6.12.0 in /samples (#1365) * fix IconTintColorBehavior for Windows (#1370) fix IconTintColorBehavior for windows Co-authored-by: Oleksii <sokol@managed-code.com> * Add `MemoryAnalyzer` roslyn analyzer (#1371) * Add NuGet Package + Update `WarningsAsErrors` * Fix MA0002 * Fix `MauiDrawingView` * Fix `MauiPopup` * Fix Naming * return `null` for nullable references * Use Ternary Operator * `dotnet format` * iOS popup fix with Shell or TabbedPage (#1343) * Fix Issue #1256 Better fix * Fixed Popup on Multiple Level Pages (#822) --------- Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com> Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> * [housekeeping] Automated PR to fix formatting errors (#1373) * Bump Microsoft.NET.Test.Sdk from 17.7.1 to 17.7.2 in /samples (#1378) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com> Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> Co-authored-by: Shaun Lawrence <shaunrlawrence@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: cat0363 <125236133+cat0363@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Wolf <132034537+wolfgang-ironsoftware@users.noreply.github.com> Co-authored-by: Thomas Stocker <thomas.stocker@gmail.com> Co-authored-by: George Leithead <github@internetwideworld.com> Co-authored-by: Sokol2001 <53799292+Sokol2001@users.noreply.github.com> Co-authored-by: Oleksii <sokol@managed-code.com> Co-authored-by: Andrey Onishchenko <100789522+cucumber-sp@users.noreply.github.com> * Added MacOS and brought across the sample page style from XCT * Added TouchBehavior Unit Tests * Fixed issue with hover * Fix Rebase Issues Git didnt pick up all the changes and the rebase left some files in a wierd way. I have restored broken files to their state on main * Manual fixes for rebase collisions Some changes from the rebase had to be manually backed out by hand, I've restored the file from main which should be enough to revert the changes. * Moved sample page to gallery The sample page is now in the proper location, all of the shell wiring has been done. I have refactored the command code to live in the viewmodel and use the source generators. The sample isn't binding at this current time, I will have to investigate. * Fixed behavior binding The binding context wasnt being set on the platform behavior. We will need to understand the impact of this going forwards, see #795 * Fixed binding in sample Updated to remove the binding context from the platform behavior, we use a relative binding to talk to the viewmodel now * Added input transparency test case There is now an example of the control design that fails to register inputs, even when transparency is opted into * Fix issue with input transparency The issue I discovered where iOS would not set input transparency if the first child was a layout has now been resolved. * Fixed Parent Child Taps There was an issue in the sample where when tapping the parent/child view inside the child, both commands would execute. I have fixed this aswell as making sure the other behaviors arent affected * Fixed Hover The hovering now works correctly, we missed one area to force the ui to update * Fixed Ripple View Positioning The ripple view now positions correctly when there are child views in a layout. * Code styling Removing private & internal everywhere it can be removed. Removed some unused properties and cleaned up some nullable bits * Dotnet format Ran dotnet format, only checked in files related to touch behavior * Replaced Console with Trace As requested in the code review * Update GestureManager.cs Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> * Code review changes Updating null checks to pattern matching, some tweaks & implementing suggestions from Pedro * Code Review - Use `static` when possible - Use `TimeSpan` for Duration - Properly Implement Async/Await - Properly Dispose - Use PatternMatching for Enum - Move Primatives to CommunityToolkit.Maui.Core * Remove duplicate `ColorTo` extension * Fix Windows The touch behavior was token by the cancellation token changes. I'm not sure if passing none is the best idea, we possibly need to generate a real one? * Fixed unit tests * Use `uint` for Duration * Use `int` for Duration * Add TouchBehaviorDefaults * Update Unit Tests * Remove duplicate calls to `ConfigureAwaitOptions.ForceYielding` * `dotnet format` * Add nullability to `PressedBackgroundColor` * Remove Unused Internal Properties * Resolve Windows Compiler Errors * `dotnet format` * Remove duplicate `splash.svg` * Update formatting * Update Formatting * Fix Find + Replace Error * Use Primary Constructors * Fix find + replace error * Update StatusBarBehavior.shared.cs * Fix Splash Screen * Fix LongPress Gesture * Update Unit Tests * Fix Build Errors on Windows * `dotnet format` * Fix duplicate SplashScreen * Revert splashscreen svg * Update CommunityToolkit.Maui.Sample.csproj * Add Unit Tests for CurrentStateChanged * Add `CanExecuteTest` * Add Unit Tests * Update src/CommunityToolkit.Maui/Behaviors/PlatformBehaviors/Touch/TouchBehavior.android.cs Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> * remove the ShouldUseNativeAnimation check in order to make it work * throw ObjectDisposedException * Big Fixes + Performance Improvements * Remove `IsToggled` * Update GestureManager.cs * Rename `PulseCount` -> `RepeatAnimationCount` * Prevent animations from happening immediately when the TouchBehavior is attached * Rename `Normal` -> `Default` * Cerate `ImageTouchBehavior` * Move `SafeFireAndForgotExtensions` * Update XML Documentation * Fix Windows Build Errors * Remove White Box * `Normal` -> `Default` * Fix Touch + Hover logic for ImageSource * Remove `RepeatAnimationCount` * Remove `RepeatAnimationCount` * Fix `SetImageSource` * `ContentVIew` -> `BoxView` * Indicate Pressed and Released are Handled Set e.Handled on PointerPressed and PointerReleased to stop passing to child controls on windows. * Remove BoxView * FIx Hover / Touch Logic in SetImageSource * Refactor GestureManager, Add StateMachine tests * Remove Unused + Duplicate Code * Rename TouchBeahavior.methods.shared.cs * Remove NativeAnimation Logic * Remove NativeAnimation from Sample * Fix Windows Build Errors * Rename file * Update ImageTouchBehaviorTests.cs * Update ImageTouchBehaviorTests.cs * Update ImageTouchBehaviorTests.cs * Update ImageTouchBehaviorTests.cs * Update ImageTouchBehaviorTests.cs * Fix merge conflicts * Fix build error --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com> Co-authored-by: Kym Phillpotts <kphillpotts@gmail.com> Co-authored-by: Christian Rendl <10274479+christianrr@users.noreply.github.com> Co-authored-by: Christian Rendl <cr@mutor.at> Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com> Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Co-authored-by: Shaun Lawrence <shaunrlawrence@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: cat0363 <125236133+cat0363@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Wolf <132034537+wolfgang-ironsoftware@users.noreply.github.com> Co-authored-by: Thomas Stocker <thomas.stocker@gmail.com> Co-authored-by: George Leithead <github@internetwideworld.com> Co-authored-by: Sokol2001 <53799292+Sokol2001@users.noreply.github.com> Co-authored-by: Oleksii <sokol@managed-code.com> Co-authored-by: Andrey Onishchenko <100789522+cucumber-sp@users.noreply.github.com> Co-authored-by: Gerald Versluis <gerald@verslu.is>
Issue moved from dotnet/maui#11729
From @YMichurin on Tuesday, November 29, 2022 4:07:21 PM
Description
Binding to observable property does not work in platform behaviors. Try any platform behavior community mvvm toolkit provides:
https://github.com/CommunityToolkit/Maui/tree/main/src/CommunityToolkit.Maui/Behaviors/PlatformBehaviors
or create your own, you would get the same result.
Here is an original stackoverflow thread https://stackoverflow.com/questions/74607699/binding-does-not-work-for-platform-dependent-behaviors
Steps to Reproduce
Take for example
StatusBarBehavior
, write something likecreate the property in your view model
Update the property value in code-behind or model like
StatusBarColorProp=Color.FromRgb(255,0,0)
. You'll see status bar color does not change with StatusBarBehavior property change in runtime. Same for all the rest of behaviors. It works fine for non-bindings setters like StatusBarColor="Red".Link to public reproduction project repository
https://github.com/CommunityToolkit/Maui/tree/main/src/CommunityToolkit.Maui/Behaviors/PlatformBehaviors
Version with bug
7.0 (current)
Last version that worked well
Unknown/Other
Affected platforms
I was not able test on other platforms
Affected platform versions
at least Android API 32 that I tested on, but does not seem to be platform dependent
Did you find any workaround?
interestingly while binding does not work for viewmodel, it does if you bind it to other control.
For example if you take BlurBehaviour from the repository https://github.com/VladislavAntonyuk/MauiSamples/tree/main/MauiImageEffects.
This code works fine:
But this one does not
Relevant log output
No response
The text was updated successfully, but these errors were encountered: