From 4dfdf46e0db635a4b2c6e341a86071cc4214a67f Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Wed, 1 Apr 2026 15:52:57 -0700 Subject: [PATCH] Fix WMC1506 XAML compiler warnings in AdvancedPaste (#46726) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixes all 13 **WMC1506** XAML compiler warnings ("OneWay bindings require at least one of their steps to support raising notifications when their value changes") by changing \Mode=OneWay\ to \Mode=OneTime\ on \x:Bind\ expressions bound to non-observable properties. ## Details **Root cause:** \PasteFormat\ (plain sealed class) and \ClipboardItem\ (plain class) do not implement \INotifyPropertyChanged\. Using \Mode=OneWay\ on their properties creates subscriptions that will never fire, generating WMC1506 warnings. **Fix:** Changed to \Mode=OneTime\ which is semantically correct — these properties are set once and never change after construction. **Files changed:** - \ClipboardHistoryItemPreviewControl.xaml\ — 2 bindings (\Header\, \Timestamp\) - \MainPage.xaml\ — 11 bindings across \PasteFormat\ and \ClipboardItem\ DataTemplates **Note on ClipboardHistoryItemPreviewControl:** Its computed properties (\Header\, \Timestamp\) are refreshed via \Bindings.Update()\ when the \ClipboardItem\ DependencyProperty changes. \Bindings.Update()\ forces re-evaluation of all \x:Bind\ bindings regardless of mode, so \OneTime\ works correctly here. ## Validation - [x] Full solution build passes (exit code 0) - [x] Zero WMC1506 warnings after changes (was 13 before) - [x] No behavioral changes — only binding mode optimization Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ClipboardHistoryItemPreviewControl.xaml | 4 ++-- .../AdvancedPasteXAML/Pages/MainPage.xaml | 22 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/ClipboardHistoryItemPreviewControl.xaml b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/ClipboardHistoryItemPreviewControl.xaml index 996f0c5b4f..763ec0934b 100644 --- a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/ClipboardHistoryItemPreviewControl.xaml +++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/ClipboardHistoryItemPreviewControl.xaml @@ -70,12 +70,12 @@ Spacing="2"> + Text="{x:Bind Timestamp, Converter={StaticResource DateTimeToFriendlyStringConverter}, Mode=OneTime}" /> diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml index bddfab733d..3f6174ce13 100644 --- a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml +++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml @@ -29,31 +29,31 @@ Padding="-9,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" - AutomationProperties.AcceleratorKey="{x:Bind ShortcutText, Mode=OneWay}" + AutomationProperties.AcceleratorKey="{x:Bind ShortcutText, Mode=OneTime}" AutomationProperties.AutomationControlType="ListItem" - AutomationProperties.FullDescription="{x:Bind ToolTip, Mode=OneWay}" - AutomationProperties.HelpText="{x:Bind Name, Mode=OneWay}" - AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneWay}"> + AutomationProperties.FullDescription="{x:Bind ToolTip, Mode=OneTime}" + AutomationProperties.HelpText="{x:Bind Name, Mode=OneTime}" + AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneTime}"> - + + Glyph="{x:Bind IconGlyph, Mode=OneTime}" /> + Text="{x:Bind Name, Mode=OneTime}" /> + Text="{x:Bind ShortcutText, Mode=OneTime}" /> @@ -83,13 +83,13 @@ Margin="0,0,0,0" VerticalAlignment="Center" FontSize="16" - Glyph="{x:Bind IconGlyph, Mode=OneWay}" /> + Glyph="{x:Bind IconGlyph, Mode=OneTime}" /> + Text="{x:Bind Name, Mode=OneTime}" /> @@ -198,7 +198,7 @@