mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 01:36:31 +02:00
Fix WMC1506 XAML compiler warnings in AdvancedPaste (#46726)
## 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>
This commit is contained in:
@@ -70,12 +70,12 @@
|
|||||||
Spacing="2">
|
Spacing="2">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Style="{StaticResource BodyTextBlockStyle}"
|
Style="{StaticResource BodyTextBlockStyle}"
|
||||||
Text="{x:Bind Header, Mode=OneWay}"
|
Text="{x:Bind Header, Mode=OneTime}"
|
||||||
TextWrapping="NoWrap" />
|
TextWrapping="NoWrap" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
||||||
Style="{StaticResource CaptionTextBlockStyle}"
|
Style="{StaticResource CaptionTextBlockStyle}"
|
||||||
Text="{x:Bind Timestamp, Converter={StaticResource DateTimeToFriendlyStringConverter}, Mode=OneWay}" />
|
Text="{x:Bind Timestamp, Converter={StaticResource DateTimeToFriendlyStringConverter}, Mode=OneTime}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -29,31 +29,31 @@
|
|||||||
Padding="-9,0,0,0"
|
Padding="-9,0,0,0"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Stretch"
|
VerticalAlignment="Stretch"
|
||||||
AutomationProperties.AcceleratorKey="{x:Bind ShortcutText, Mode=OneWay}"
|
AutomationProperties.AcceleratorKey="{x:Bind ShortcutText, Mode=OneTime}"
|
||||||
AutomationProperties.AutomationControlType="ListItem"
|
AutomationProperties.AutomationControlType="ListItem"
|
||||||
AutomationProperties.FullDescription="{x:Bind ToolTip, Mode=OneWay}"
|
AutomationProperties.FullDescription="{x:Bind ToolTip, Mode=OneTime}"
|
||||||
AutomationProperties.HelpText="{x:Bind Name, Mode=OneWay}"
|
AutomationProperties.HelpText="{x:Bind Name, Mode=OneTime}"
|
||||||
AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneWay}">
|
AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneTime}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="48" />
|
<ColumnDefinition Width="48" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<ToolTipService.ToolTip>
|
<ToolTipService.ToolTip>
|
||||||
<TextBlock Text="{x:Bind ToolTip, Mode=OneWay}" />
|
<TextBlock Text="{x:Bind ToolTip, Mode=OneTime}" />
|
||||||
</ToolTipService.ToolTip>
|
</ToolTipService.ToolTip>
|
||||||
<FontIcon
|
<FontIcon
|
||||||
Margin="0,0,0,0"
|
Margin="0,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
Glyph="{x:Bind IconGlyph, Mode=OneWay}" />
|
Glyph="{x:Bind IconGlyph, Mode=OneTime}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
x:Phase="1"
|
x:Phase="1"
|
||||||
Style="{StaticResource CaptionTextBlockStyle}"
|
Style="{StaticResource CaptionTextBlockStyle}"
|
||||||
Text="{x:Bind Name, Mode=OneWay}" />
|
Text="{x:Bind Name, Mode=OneTime}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Margin="0,0,8,0"
|
Margin="0,0,8,0"
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
||||||
Style="{StaticResource CaptionTextBlockStyle}"
|
Style="{StaticResource CaptionTextBlockStyle}"
|
||||||
Text="{x:Bind ShortcutText, Mode=OneWay}" />
|
Text="{x:Bind ShortcutText, Mode=OneTime}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</controls:PasteFormatTemplateSelector.ItemTemplate>
|
</controls:PasteFormatTemplateSelector.ItemTemplate>
|
||||||
@@ -83,13 +83,13 @@
|
|||||||
Margin="0,0,0,0"
|
Margin="0,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
Glyph="{x:Bind IconGlyph, Mode=OneWay}" />
|
Glyph="{x:Bind IconGlyph, Mode=OneTime}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
x:Phase="1"
|
x:Phase="1"
|
||||||
Style="{StaticResource CaptionTextBlockStyle}"
|
Style="{StaticResource CaptionTextBlockStyle}"
|
||||||
Text="{x:Bind Name, Mode=OneWay}" />
|
Text="{x:Bind Name, Mode=OneTime}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</controls:PasteFormatTemplateSelector.ItemTemplateDisabled>
|
</controls:PasteFormatTemplateSelector.ItemTemplateDisabled>
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
<ItemsView.ItemTemplate>
|
<ItemsView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="local:ClipboardItem">
|
<DataTemplate x:DataType="local:ClipboardItem">
|
||||||
<ItemContainer
|
<ItemContainer
|
||||||
AutomationProperties.Name="{x:Bind Description, Mode=OneWay}"
|
AutomationProperties.Name="{x:Bind Description, Mode=OneTime}"
|
||||||
CornerRadius="16"
|
CornerRadius="16"
|
||||||
ToolTipService.ToolTip="{x:Bind Content}">
|
ToolTipService.ToolTip="{x:Bind Content}">
|
||||||
<Grid
|
<Grid
|
||||||
|
|||||||
Reference in New Issue
Block a user