Files
PowerToys/src/modules/cmdpal/Microsoft.CmdPal.UI/Converters/GridItemContainerStyleSelector.cs

43 lines
1.2 KiB
C#
Raw Normal View History

CmdPal: Fix grid views (#43991) ## Summary of the Pull Request This PR fixes the crash due to binding to a trimmed property. For this it converts runtime bindings on GridView to use `{x:Bind}` so this issue can't happen in the future. - Fixes a crash related to the `Visibility` property in gallery/grid views when trimmed during AOT builds. - Fixes ShowTitle and ShowSubtitle properties, they are now taken into account in a view. - Improves UI layout, removes some margins and maches the corner radius of the item contaienr with the item content in the gallery view. - Refactores gallery and grid views to move logic from the view to the view model so we can x:Bind to them. - Replaces `{Binding}` with `{x:Bind}` to improve performance and enable compile-time binding validation. - Properties related to grids are splatted on to the common `IGridPropertiesViewModel` interface. Subclassing would add extra overhead without substential benefit. - Adds new samples to showcase various grid view configurations. ## Pictures? Pictures! A) Gallery view (with title and subtitle) <img width="909" height="583" alt="image" src="https://github.com/user-attachments/assets/b807e7a8-412f-4817-8121-e3470c49e0c0" /> B) Gallery view (only title) <img width="903" height="582" alt="image" src="https://github.com/user-attachments/assets/b619d63f-04d0-42f2-9207-de256dc5e481" /> C) Gallery view (no title or subtitle) <img width="900" height="583" alt="image" src="https://github.com/user-attachments/assets/c48cd1fc-8f51-40c1-8bce-607916e9f742" /> D) Small icons <img width="907" height="582" alt="image" src="https://github.com/user-attachments/assets/8327da0a-fa45-443f-b52c-f0f1edd7b861" /> E) Medium icons (with labels) <img width="914" height="588" alt="image" src="https://github.com/user-attachments/assets/dee9fab1-54e8-45f8-96d7-502b121a6ac2" /> F) Medium icons (no labels) <img width="915" height="588" alt="image" src="https://github.com/user-attachments/assets/a32e8af2-6cb1-4106-91db-ca396253c0a3" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #43973 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
2025-12-01 02:32:30 +01:00
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.CmdPal.Core.ViewModels;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
namespace Microsoft.CmdPal.UI;
internal sealed partial class GridItemContainerStyleSelector : StyleSelector
{
public IGridPropertiesViewModel? GridProperties { get; set; }
public Style? Small { get; set; }
public Style? Medium { get; set; }
public Style? Gallery { get; set; }
CmdPal: Improve readability and a11y of sections (#44556) ## Summary of the Pull Request This PR improves visuals and a11y of sections: - Changes section title color from disabled to secondary text fill. - Removes separator line if the text is present and indents - Changes gallery grid subtitle color from tertiary to secondary text fill. ## Pictures? Pictures! <img width="850" height="718" alt="image" src="https://github.com/user-attachments/assets/2e0bffa2-045f-48d9-bff5-dcc561395c6a" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/69081472-7f4b-489a-b0e5-5778894fef97" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/aa3f0e73-def8-45cb-9f9a-6e9d7e0e6137" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/cb8f6bdf-9288-4b6e-b8b8-94f8c83e3ffc" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
2026-01-08 21:23:38 +01:00
public Style? Section { get; set; }
public Style? Separator { get; set; }
CmdPal: Fix grid views (#43991) ## Summary of the Pull Request This PR fixes the crash due to binding to a trimmed property. For this it converts runtime bindings on GridView to use `{x:Bind}` so this issue can't happen in the future. - Fixes a crash related to the `Visibility` property in gallery/grid views when trimmed during AOT builds. - Fixes ShowTitle and ShowSubtitle properties, they are now taken into account in a view. - Improves UI layout, removes some margins and maches the corner radius of the item contaienr with the item content in the gallery view. - Refactores gallery and grid views to move logic from the view to the view model so we can x:Bind to them. - Replaces `{Binding}` with `{x:Bind}` to improve performance and enable compile-time binding validation. - Properties related to grids are splatted on to the common `IGridPropertiesViewModel` interface. Subclassing would add extra overhead without substential benefit. - Adds new samples to showcase various grid view configurations. ## Pictures? Pictures! A) Gallery view (with title and subtitle) <img width="909" height="583" alt="image" src="https://github.com/user-attachments/assets/b807e7a8-412f-4817-8121-e3470c49e0c0" /> B) Gallery view (only title) <img width="903" height="582" alt="image" src="https://github.com/user-attachments/assets/b619d63f-04d0-42f2-9207-de256dc5e481" /> C) Gallery view (no title or subtitle) <img width="900" height="583" alt="image" src="https://github.com/user-attachments/assets/c48cd1fc-8f51-40c1-8bce-607916e9f742" /> D) Small icons <img width="907" height="582" alt="image" src="https://github.com/user-attachments/assets/8327da0a-fa45-443f-b52c-f0f1edd7b861" /> E) Medium icons (with labels) <img width="914" height="588" alt="image" src="https://github.com/user-attachments/assets/dee9fab1-54e8-45f8-96d7-502b121a6ac2" /> F) Medium icons (no labels) <img width="915" height="588" alt="image" src="https://github.com/user-attachments/assets/a32e8af2-6cb1-4106-91db-ca396253c0a3" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #43973 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
2025-12-01 02:32:30 +01:00
protected override Style? SelectStyleCore(object item, DependencyObject container)
{
CmdPal: Improve readability and a11y of sections (#44556) ## Summary of the Pull Request This PR improves visuals and a11y of sections: - Changes section title color from disabled to secondary text fill. - Removes separator line if the text is present and indents - Changes gallery grid subtitle color from tertiary to secondary text fill. ## Pictures? Pictures! <img width="850" height="718" alt="image" src="https://github.com/user-attachments/assets/2e0bffa2-045f-48d9-bff5-dcc561395c6a" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/69081472-7f4b-489a-b0e5-5778894fef97" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/aa3f0e73-def8-45cb-9f9a-6e9d7e0e6137" /> <img width="850" height="773" alt="image" src="https://github.com/user-attachments/assets/cb8f6bdf-9288-4b6e-b8b8-94f8c83e3ffc" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
2026-01-08 21:23:38 +01:00
if (item is ListItemViewModel { IsSectionOrSeparator: true } listItem)
{
return string.IsNullOrWhiteSpace(listItem.Title)
? Separator!
: Section;
}
CmdPal: Fix grid views (#43991) ## Summary of the Pull Request This PR fixes the crash due to binding to a trimmed property. For this it converts runtime bindings on GridView to use `{x:Bind}` so this issue can't happen in the future. - Fixes a crash related to the `Visibility` property in gallery/grid views when trimmed during AOT builds. - Fixes ShowTitle and ShowSubtitle properties, they are now taken into account in a view. - Improves UI layout, removes some margins and maches the corner radius of the item contaienr with the item content in the gallery view. - Refactores gallery and grid views to move logic from the view to the view model so we can x:Bind to them. - Replaces `{Binding}` with `{x:Bind}` to improve performance and enable compile-time binding validation. - Properties related to grids are splatted on to the common `IGridPropertiesViewModel` interface. Subclassing would add extra overhead without substential benefit. - Adds new samples to showcase various grid view configurations. ## Pictures? Pictures! A) Gallery view (with title and subtitle) <img width="909" height="583" alt="image" src="https://github.com/user-attachments/assets/b807e7a8-412f-4817-8121-e3470c49e0c0" /> B) Gallery view (only title) <img width="903" height="582" alt="image" src="https://github.com/user-attachments/assets/b619d63f-04d0-42f2-9207-de256dc5e481" /> C) Gallery view (no title or subtitle) <img width="900" height="583" alt="image" src="https://github.com/user-attachments/assets/c48cd1fc-8f51-40c1-8bce-607916e9f742" /> D) Small icons <img width="907" height="582" alt="image" src="https://github.com/user-attachments/assets/8327da0a-fa45-443f-b52c-f0f1edd7b861" /> E) Medium icons (with labels) <img width="914" height="588" alt="image" src="https://github.com/user-attachments/assets/dee9fab1-54e8-45f8-96d7-502b121a6ac2" /> F) Medium icons (no labels) <img width="915" height="588" alt="image" src="https://github.com/user-attachments/assets/a32e8af2-6cb1-4106-91db-ca396253c0a3" /> <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] Closes: #43973 <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
2025-12-01 02:32:30 +01:00
return GridProperties switch
{
SmallGridPropertiesViewModel => Small,
MediumGridPropertiesViewModel => Medium,
GalleryGridPropertiesViewModel => Gallery,
_ => Medium,
};
}
}