Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
[X] do not apply Bindings if DataType doesnt match #22056
base: main
Are you sure you want to change the base?
[X] do not apply Bindings if DataType doesnt match #22056
Changes from all commits
6d4c525
df5f343
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we log a warning to make it easier to debug the type mismatch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm afraid that a warning will make HotReload fail
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's something that "works" but is not the correct or preferred way to bind, I rather hot reload not work and tell the user about the issue rather than let it through even though there is a type mismatch that "works" but is wrong. I'm also not sure if warnings in it of themselves would stop hot reload itself or if we could still show the warning and let the action through anyway.
@mgoertz-msft what do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You would need to ask @etvorun. I'm not sure what the exact condition is for errors/warnings to cause Hot Reload to skip requests. I also thought that HR only looks at these reported from IntelliSense and not build but I could be wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My preference would be to follow WPF, which is to silently ignore bad binding and fire BindingErrorEventArgs. Devs can use VS support for binding diagnostics which supports MAUI. @spadapet is the expert in that area.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @etvorun. XAML Hot Reload will send the bad binding to the app since XAML parsing is valid (like @mgoertz-msft said). If this code triggers a BindingFailed event, then the UI in Visual Studio and the in-app toolbar will immediately show that a runtime binding failure occurred. Then the user can see a detailed error message and jump to the XAML.
NOTE: The BindingFailed event is sent by calling BindingDiagnostics.SendBindingFailure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will this service be added even when XamlC creates the new XamlServiceProvider instance? And if it is, won't this be added for almost any extension, even if
IXamlDataTypeProvider
is not in its[RequiredService([...])]
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
going to fix this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RequiredService isn't in main yet. also, this won't get invoked from compiled XAML