Skip to content

Conversation

@Vignesh-SF3580
Copy link
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Issue Details

The DeveloperBalance template sample in the .NET MAUI repo is not up to date with the latest changes from the MAUI Samples repo.

Description of Change

Updated the MAUI mobile DeveloperBalance sample with the latest changes from the MAUI Samples repository.

Screenshots

Mac Windows
MacDebug.mov
WindowsDebug.mp4
Android iOS
AndroidDebug.mov
iOSDebug.mov

@dotnet-policy-service dotnet-policy-service bot added the community ✨ Community Contribution label Oct 22, 2025
@dotnet-policy-service
Copy link
Contributor

Hey there @@Vignesh-SF3580! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@dotnet-policy-service dotnet-policy-service bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Oct 22, 2025
@Tamilarasan-Paranthaman Tamilarasan-Paranthaman added the area-templates Project templates, Item Templates for Blazor and MAUI label Oct 22, 2025
@Vignesh-SF3580 Vignesh-SF3580 marked this pull request as ready for review October 22, 2025 12:46
Copilot AI review requested due to automatic review settings October 22, 2025 12:46
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR synchronizes the DeveloperBalance template sample from the MAUI Samples repository to the .NET MAUI repository, bringing UI improvements, accessibility enhancements, and code refactoring changes.

Key Changes:

  • Replaced deprecated layout options (FillAndExpand, CenterAndExpand) with their modern equivalents
  • Refactored tag selection UI from HorizontalStackLayout with template selector to CollectionView with visual states
  • Added platform-specific handler configurations for iOS, macOS, and Windows to improve keyboard accessibility

Reviewed Changes

Copilot reviewed 17 out of 19 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
AppStyles.xaml Updated layout options to use non-deprecated values
Info.plist Added MacCatalyst app category metadata
ProjectListPage.xaml.cs Added binding context assignment for appearing behavior
ProjectListPage.xaml Replaced BindableLayout with CollectionView for improved selection handling
ProjectDetailPage.xaml Refactored tag selection from template selector to CollectionView with visual states
MainPage.xaml Reordered Grid property attributes
TaskView.xaml Restructured task item layout to improve accessibility
ProjectCardView.xaml Changed tag container from HorizontalStackLayout to FlexLayout and removed deprecated property
ChartDataLabelConverter.cs Created new converter to replace DataLabelValueConverter with updated implementation
CategoryChart.xaml Updated to use new ChartDataLabelConverter and cleaned up duplicate x:DataType attributes
ProjectListPageModel.cs Added selected project property and null check for navigation
ProjectDetailPageModel.cs Added SelectionChanged command to handle CollectionView multi-selection
MauiProgram.cs Added platform-specific handler configurations for improved keyboard accessibility
TagRepository.cs Added duplicate association check to prevent redundant database operations
DataLabelValueConverter.cs Removed obsolete converter class
AppShell.xaml.cs Added semantic description for theme control on Android/Windows
AppShell.xaml Added semantic descriptions to theme segment items

{
BindingContext = model;
InitializeComponent();
AppearingBehavior.BindingContext = model;
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting BindingContext on a behavior after InitializeComponent() is unusual, as behaviors typically inherit the binding context from their parent element. This could indicate a deeper issue with how the behavior's data context is resolved. Consider whether this explicit assignment is necessary, or if the XAML binding on line 17 of the .xaml file should be sufficient.

Suggested change
AppearingBehavior.BindingContext = model;

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BindingContext is already set in XAML, so there’s no need to set it here. I have removed it

BindableLayout.ItemTemplateSelector="{StaticResource ChipDataTemplateSelector}"/>
</ScrollView>

<!-- TODO This is still a little jumpy when changing selection -->
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO comment indicates an unresolved UI issue with tag selection. Before merging, either resolve the jumpiness issue or create a tracked work item to address it.

Suggested change
<!-- TODO This is still a little jumpy when changing selection -->
<!-- UI jumpiness when changing tag selection. Tracked in issue #123. -->

Copilot uses AI. Check for mistakes.
IsChecked="{Binding IsCompleted, Mode=OneTime}"
VerticalOptions="Center"
CheckedChanged="CheckBox_CheckedChanged"
AutomationProperties.IsInAccessibleTree="True"
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default value of IsInAccessibleTree is already True. This explicit assignment is redundant and can be removed.

Suggested change
AutomationProperties.IsInAccessibleTree="True"

Copilot uses AI. Check for mistakes.
Task NavigateToProject(Project project)
=> Shell.Current.GoToAsync($"project?id={project.ID}");
Task? NavigateToProject(Project project)
=> project is null ? null : Shell.Current.GoToAsync($"project?id={project.ID}");
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returning null as a Task? instead of Task.CompletedTask is unconventional. Consider using Task.CompletedTask for consistency with async patterns, or change the return type to Task and throw an exception if the project is null.

Suggested change
=> project is null ? null : Shell.Current.GoToAsync($"project?id={project.ID}");
=> project is null ? Task.CompletedTask : Shell.Current.GoToAsync($"project?id={project.ID}");

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why at any point would we be passing a null value into NavigateToProject?
is this a bug further up?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Project was never null, and I updated the code based on the suggestion.

Comment on lines 230 to 231
await SaveItemAsync(item);

Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The IsAssociated method calls SaveItemAsync(item) which modifies the database state while checking if an association exists. This is a side effect that shouldn't occur in a method that appears to only query state. Remove line 230 to make this a pure query method.

Suggested change
await SaveItemAsync(item);

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the changes.

Comment on lines 33 to 39
Microsoft.Maui.Handlers.ContentViewHandler.Mapper.AppendToMapping(nameof(Pages.Controls.CategoryChart), (handler, view) =>
{
if (view is Pages.Controls.CategoryChart && handler.PlatformView is ContentPanel contentPanel)
{
contentPanel.IsTabStop = true;
}
});
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Using nameof(Pages.Controls.CategoryChart) as the mapping key is unusual since this is typically a simple string identifier. Consider using a descriptive string constant like \"CategoryChartAccessibility\" instead for clarity.

Copilot uses AI. Check for mistakes.
Copilot AI added a commit that referenced this pull request Oct 22, 2025
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
BindableLayout.ItemTemplateSelector="{StaticResource ChipDataTemplateSelector}"/>
</ScrollView>

<!-- TODO This is still a little jumpy when changing selection -->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is tracked somewhere in an issue?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Vignesh-SF3580 please leave out any TODO comments on the templates

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jsuarezruiz I have checked the MAUI Samples issue reports - no related issue report were found.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the TODO comments.

@github-project-automation github-project-automation bot moved this from Todo to Changes Requested in MAUI SDK Ongoing Oct 22, 2025
@jfversluis
Copy link
Member

/azp run MAUI-public

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copilot AI added a commit that referenced this pull request Oct 22, 2025
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
#if (IncludeSampleContent)
.UseMauiCommunityToolkit()
.ConfigureSyncfusionToolkit()
//-:cnd:noEmit
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's required?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea, It's needed for the #IF WINDOWS Calls
We might want to move these so it's more explicilit that's what they are for

@github-project-automation github-project-automation bot moved this from Changes Requested to Approved in MAUI SDK Ongoing Oct 23, 2025
@PureWeen PureWeen merged commit 2be3a9f into dotnet:net10.0 Oct 23, 2025
20 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Done in MAUI SDK Ongoing Oct 23, 2025
@PureWeen
Copy link
Member

/backport to release/10.0.1xx

@github-actions
Copy link
Contributor

Started backporting to release/10.0.1xx: https://github.com/dotnet/maui/actions/runs/18754846384

PureWeen added a commit that referenced this pull request Oct 29, 2025
…#32112)

* Initial plan

* Migrate chart data label binding fix to Developer Balance template

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Integrate all changes from PR #32148 into Developer Balance template

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Add template semantic markers for platform-specific directives and document template conventions

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Update MauiProgram.cs

* Move template instructions to path-specific YAML file

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Resync with PR #32148 - fix implementation differences

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Fix path-specific custom instructions format per GitHub docs

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Revert all template changes - keep only copilot instructions

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

* Update .github/copilot-instructions/templates.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Improve copilot instructions structure and clarity per feedback

Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-templates Project templates, Item Templates for Blazor and MAUI community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants