Use a markup extension instead of x:Uid to load localized strings (#1902)

This PR uses XAML markup extensions, ResourceString and ResourceVirtualKey, to load localized resources instead of using x:Uid. I used a script to find all strings corresponding to an x:Uid and substitute them into the XAML, and then manually cleaned up the generated code.

This is intended to improve developer productivity. Now, when reading the XAML file, you don't have to cross-reference the resw file to see if a control has a tooltip or an automation name.

Decoupling the UI from the string names also makes it easier to change the UI without impacting localization: for example, you can now use the same string in multiple places, or use an existing string on a new UI element. For now, I've avoided making any changes to the resw file to avoid impacting the localization process.
This commit is contained in:
Matt Cooley 2023-05-16 09:04:55 -07:00 committed by GitHub
commit 14f35d19f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 888 additions and 536 deletions

View file

@ -8,7 +8,8 @@
xmlns:converters="using:CalculatorApp.Converters"
xmlns:local="using:CalculatorApp"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives">
xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives"
xmlns:utils="using:CalculatorApp.Utils">
<Application.Resources>
<ResourceDictionary>
@ -790,7 +791,6 @@
TextWrapping="NoWrap"/>
</ScrollViewer>
<HyperlinkButton x:Name="ScrollLeft"
x:Uid="CalculationResultScrollLeft"
Grid.Column="0"
Width="20"
MinWidth="20"
@ -803,6 +803,7 @@
Foreground="{ThemeResource SystemControlForegroundAccentBrush}"
BorderThickness="0"
AutomationProperties.AutomationId="CalculationResultScrollLeft"
AutomationProperties.Name="{utils:ResourceString Name=CalculationResultScrollLeft/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Visibility="Collapsed">
<FontIcon x:Name="ScrollLeftText"
FontFamily="{ThemeResource CalculatorFontFamily}"
@ -810,7 +811,6 @@
Glyph="&#xE96F;"/>
</HyperlinkButton>
<HyperlinkButton x:Name="ScrollRight"
x:Uid="CalculationResultScrollRight"
Grid.Column="2"
Width="20"
MinWidth="20"
@ -823,6 +823,7 @@
Foreground="{ThemeResource SystemControlForegroundAccentBrush}"
BorderThickness="0"
AutomationProperties.AutomationId="CalculationResultScrollRight"
AutomationProperties.Name="{utils:ResourceString Name=CalculationResultScrollRight/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Visibility="Collapsed">
<FontIcon x:Name="ScrollRightText"
FontFamily="{ThemeResource CalculatorFontFamily}"

View file

@ -165,6 +165,8 @@
<Compile Include="Converters\RadixToStringConverter.cs" />
<Compile Include="Converters\VisibilityNegationConverter.cs" />
<Compile Include="Selectors\NavViewMenuItemTemplateSelector.cs" />
<Compile Include="Utils\ResourceVirtualKey.cs" />
<Compile Include="Utils\ResourceString.cs" />
<Compile Include="Utils\ThemeHelper.cs" />
<Compile Include="Views\GraphingCalculator\EquationStylePanelControl.xaml.cs">
<DependentUpon>EquationStylePanelControl.xaml</DependentUpon>

View file

@ -0,0 +1,19 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using Windows.UI.Xaml.Markup;
namespace CalculatorApp.Utils
{
[MarkupExtensionReturnType(ReturnType = typeof(string))]
public sealed class ResourceString : MarkupExtension
{
public string Name { get; set; }
protected override object ProvideValue()
{
return AppResourceProvider.GetInstance().GetResourceString(this.Name);
}
}
}

View file

@ -0,0 +1,21 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Xaml.Markup;
namespace CalculatorApp.Utils
{
[MarkupExtensionReturnType(ReturnType = typeof(MyVirtualKey))]
public sealed class ResourceVirtualKey : MarkupExtension
{
public string Name { get; set; }
protected override object ProvideValue()
{
var resourceString = AppResourceProvider.GetInstance().GetResourceString(this.Name);
return Enum.Parse(typeof(MyVirtualKey), resourceString);
}
}
}

View file

@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
xmlns:common="using:CalculatorApp.ViewModel.Common"
xmlns:common="using:CalculatorApp.Common"
xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
xmlns:contract8NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,8)"
xmlns:contract8Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,8)"
@ -11,25 +11,27 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vmcommon="using:CalculatorApp.ViewModel.Common"
Loaded="OnLoaded"
mc:Ignorable="d">
<UserControl.Resources>
<!-- DataTemplates -->
<DataTemplate x:Key="Operand" x:DataType="common:DisplayExpressionToken">
<DataTemplate x:Key="Operand" x:DataType="vmcommon:DisplayExpressionToken">
<TextBlock Margin="2,0,0,0"
Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"
Text="{x:Bind Token, Mode=OneWay}"/>
</DataTemplate>
<DataTemplate x:Key="Operator" x:DataType="common:DisplayExpressionToken">
<DataTemplate x:Key="Operator" x:DataType="vmcommon:DisplayExpressionToken">
<TextBlock Margin="2,0,0,0"
Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"
Text="{x:Bind Token, Mode=OneWay}"/>
</DataTemplate>
<DataTemplate x:Key="Separator" x:DataType="common:DisplayExpressionToken">
<DataTemplate x:Key="Separator" x:DataType="vmcommon:DisplayExpressionToken">
<TextBlock x:Name="MainText" Text="{x:Bind Token, Mode=OneWay}"/>
</DataTemplate>
@ -73,19 +75,19 @@
</Grid>
</ScrollViewer>
<Button x:Name="ScrollLeft"
x:Uid="scrollLeft"
Grid.Column="0"
Margin="-4,3,-4,0"
Style="{StaticResource ScrollButtonStyle}">
Style="{StaticResource ScrollButtonStyle}"
AutomationProperties.Name="{utils:ResourceString Name=scrollLeft/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<FontIcon FontFamily="{ThemeResource CalculatorFontFamily}"
FontSize="12"
Glyph="&#xE96F;"/>
</Button>
<Button x:Name="ScrollRight"
x:Uid="scrollRight"
Grid.Column="2"
Margin="-4,3,-4,0"
Style="{StaticResource ScrollButtonStyle}">
Style="{StaticResource ScrollButtonStyle}"
AutomationProperties.Name="{utils:ResourceString Name=scrollRight/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<FontIcon FontFamily="{ThemeResource CalculatorFontFamily}"
FontSize="12"
Glyph="&#xE970;"/>
@ -179,25 +181,25 @@
</ScrollViewer>
<Button x:Name="ScrollLeft"
x:Uid="scrollLeft"
Grid.Column="0"
Width="{TemplateBinding ScrollButtonsWidth}"
Margin="0,3,0,0"
VerticalAlignment="Stretch"
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
Background="Transparent">
Background="Transparent"
AutomationProperties.Name="{utils:ResourceString Name=scrollLeft/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<FontIcon FontFamily="{ThemeResource CalculatorFontFamily}"
FontSize="{TemplateBinding ScrollButtonsFontSize}"
Glyph="&#xE96F;"/>
</Button>
<Button x:Name="ScrollRight"
x:Uid="scrollRight"
Grid.Column="2"
Width="{TemplateBinding ScrollButtonsWidth}"
Margin="0,3,0,0"
VerticalAlignment="Stretch"
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
Background="Transparent">
Background="Transparent"
AutomationProperties.Name="{utils:ResourceString Name=scrollRight/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<FontIcon FontFamily="{ThemeResource CalculatorFontFamily}"
FontSize="{TemplateBinding ScrollButtonsFontSize}"
Glyph="&#xE970;"/>
@ -676,14 +678,16 @@
x:Load="False"/>
<Button x:Name="HistoryButton"
x:Uid="HistoryButton"
Grid.Row="0"
Style="{StaticResource HistoryButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=HistoryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AccessKey="{utils:ResourceString Name=HistoryButton/AccessKey}"
AutomationProperties.AutomationId="HistoryButton"
Command="{x:Bind HistoryButtonPressed, Mode=OneTime}"
Content="&#xe81c;"
ExitDisplayModeOnAccessKeyInvoked="False"
TabIndex="2"
ToolTipService.ToolTip="{utils:ResourceString Name=HistoryButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{x:Bind local:Calculator.ShouldDisplayHistoryButton(Model.IsAlwaysOnTop, Model.IsProgrammer, DockPanel.Visibility), Mode=OneWay}"
IsEnabled="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}">
<FlyoutBase.AttachedFlyout>
@ -707,10 +711,10 @@
<!-- Memory panel controls -->
<Grid x:Name="MemoryPanel"
x:Uid="MemoryPanel"
Grid.Row="4"
Margin="3,0,3,0"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=MemoryPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Visibility="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanToVisibilityNegationConverter}, Mode=OneWay}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" MaxWidth="80"/>
@ -727,67 +731,78 @@
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="ClearMemoryButton"
x:Uid="ClearMemoryButton"
Style="{StaticResource CaptionButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=ClearMemoryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="ClearMemoryButton"
AutomationProperties.Name="{utils:ResourceString Name=ClearMemoryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.ClearMemoryCommand}"
Content="&#xF754;"
TabIndex="10"
ToolTipService.ToolTip="{utils:ResourceString Name=ClearMemoryButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{Binding IsProgrammer, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="MemRecall"
x:Uid="MemRecall"
Grid.Column="1"
Style="{StaticResource CaptionButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=MemRecall/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="MemRecall"
AutomationProperties.Name="{utils:ResourceString Name=MemRecall/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.MemoryItemPressed}"
CommandParameter="{StaticResource Zero}"
Content="&#xF755;"
TabIndex="11"
ToolTipService.ToolTip="{utils:ResourceString Name=MemRecall/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{Binding IsProgrammer, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="MemPlus"
x:Uid="MemPlus"
Grid.Column="2"
Style="{StaticResource CaptionButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=MemPlus/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="MemPlus"
AutomationProperties.Name="{utils:ResourceString Name=MemPlus/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.MemoryAdd}"
CommandParameter="{StaticResource Zero}"
Content="&#xF757;"
TabIndex="12"
ToolTipService.ToolTip="{utils:ResourceString Name=MemPlus/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{Binding IsProgrammer, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="MemMinus"
x:Uid="MemMinus"
Grid.Column="3"
Style="{StaticResource CaptionButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=MemMinus/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="MemMinus"
AutomationProperties.Name="{utils:ResourceString Name=MemMinus/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.MemorySubtract}"
CommandParameter="{StaticResource Zero}"
Content="&#xF758;"
TabIndex="13"
ToolTipService.ToolTip="{utils:ResourceString Name=MemMinus/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{Binding IsProgrammer, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="MemButton"
x:Uid="memButton"
Grid.Column="4"
Style="{StaticResource CaptionButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=memButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="memButton"
AutomationProperties.Name="{utils:ResourceString Name=memButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Memory"
Content="&#xF756;"
TabIndex="14"/>
TabIndex="14"
ToolTipService.ToolTip="{utils:ResourceString Name=memButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
<Button x:Name="MemoryButton"
x:Uid="MemoryButton"
Grid.Column="6"
MinWidth="15.5"
MinHeight="8.402"
Style="{StaticResource CaptionButtonStyle}"
AccessKey="{utils:ResourceString Name=MemoryButton/AccessKey}"
AutomationProperties.AutomationId="MemoryButton"
Click="ToggleMemoryFlyout"
Content="&#xE61D;"
ExitDisplayModeOnAccessKeyInvoked="False"
TabIndex="15"
ToolTipService.ToolTip="{utils:ResourceString Name=MemoryButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
IsEnabled="{x:Bind Model.IsMemoryEmpty, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}">
<FlyoutBase.AttachedFlyout>
<Flyout x:Name="MemoryFlyout"
x:Uid="MemoryFlyout"
AutomationProperties.AutomationId="MemoryFlyout"
AutomationProperties.Name="{utils:ResourceString Name=MemoryFlyout/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Closed="OnMemoryFlyoutClosed"
Closing="OnMemoryFlyoutClosing"
FlyoutPresenterStyle="{StaticResource MemoryFlyoutStyle}"
@ -811,10 +826,10 @@
<!-- Docked Pivot panel for history/memory -->
<Border x:Name="DockPanel"
x:Uid="DockPanel"
Grid.Row="1"
Grid.Column="1"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=DockPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Visibility="Collapsed">
<Border.Resources>
<!--
@ -1329,20 +1344,24 @@
</Style>
</Pivot.Resources>
<PivotItem x:Name="HistoryPivotItem"
x:Uid="HistoryPivotItem"
Margin="0,10,0,0"
AutomationProperties.AutomationId="HistoryLabel">
AutomationProperties.AutomationId="HistoryLabel"
AutomationProperties.Name="{utils:ResourceString Name=HistoryPivotItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<PivotItem.Header>
<TextBlock x:Uid="HistoryLabel" AccessKeyInvoked="OnHistoryAccessKeyInvoked"/>
<TextBlock AccessKey="{utils:ResourceString Name=HistoryLabel/AccessKey}"
AccessKeyInvoked="OnHistoryAccessKeyInvoked"
Text="{utils:ResourceString Name=HistoryLabel/Text}"/>
</PivotItem.Header>
<Border x:Name="DockHistoryHolder"/>
</PivotItem>
<PivotItem x:Name="MemoryPivotItem"
x:Uid="MemoryPivotItem"
Margin="0,10,0,0"
AutomationProperties.AutomationId="MemoryLabel">
AutomationProperties.AutomationId="MemoryLabel"
AutomationProperties.Name="{utils:ResourceString Name=MemoryPivotItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<PivotItem.Header>
<TextBlock x:Uid="MemoryLabel" AccessKeyInvoked="OnMemoryAccessKeyInvoked"/>
<TextBlock AccessKey="{utils:ResourceString Name=MemoryLabel/AccessKey}"
AccessKeyInvoked="OnMemoryAccessKeyInvoked"
Text="{utils:ResourceString Name=MemoryLabel/Text}"/>
</PivotItem.Header>
<Border x:Name="DockMemoryHolder"/>
</PivotItem>

View file

@ -6,6 +6,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="BitFlip"
d:DesignHeight="395"
d:DesignWidth="315"
@ -98,7 +99,6 @@
AutomationProperties.AccessibilityView="Raw"
Content="{Binding Text, ElementName=BinaryZero, Mode=OneWay}"/>
<TextBlock x:Name="BinaryZero"
x:Uid="BinaryZero"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
@ -106,9 +106,9 @@
FontSize="{TemplateBinding FontSize}"
FontWeight="SemiBold"
AutomationProperties.AccessibilityView="Raw"
IsTextScaleFactorEnabled="False"/>
IsTextScaleFactorEnabled="False"
Text="{utils:ResourceString Name=BinaryZero/Text}"/>
<TextBlock x:Name="BinaryOne"
x:Uid="BinaryOne"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
@ -117,6 +117,7 @@
FontWeight="SemiBold"
AutomationProperties.AccessibilityView="Raw"
IsTextScaleFactorEnabled="False"
Text="{utils:ResourceString Name=BinaryOne/Text}"
Visibility="Collapsed"/>
</Grid>
</Grid>
@ -137,9 +138,9 @@
</Style>
</UserControl.Resources>
<Grid x:Name="BitFlipPanel"
x:Uid="BitFlipPanel"
Margin="0,1,0,1"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=BitFlipPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>

View file

@ -7,13 +7,14 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
Margin="3,0,0,0"
d:DesignHeight="300"
d:DesignWidth="400"
mc:Ignorable="d">
<UserControl.Resources>
<converters:BooleanNegationConverter x:Key="BooleanNegationConverter"/>
<converters:BooleanNegationConverter x:Key="BooleanNegationConverter"/>
</UserControl.Resources>
<Grid x:Name="ProgrammerDisplay">
@ -51,64 +52,70 @@
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Uid="InputModeSelectionGroup"
Grid.Column="0"
AutomationProperties.HeadingLevel="Level1">
<Grid Grid.Column="0"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=InputModeSelectionGroup/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" MaxWidth="80"/>
<ColumnDefinition Width="1*" MaxWidth="80"/>
</Grid.ColumnDefinitions>
<RadioButton x:Name="FullKeypad"
x:Uid="fullKeypad"
Style="{StaticResource ConditionalProgKeypadRadioButtonStyle}"
AutomationProperties.AutomationId="fullKeypad"
AutomationProperties.Name="{utils:ResourceString Name=fullKeypad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="&#xe75f;"
IsChecked="{x:Bind Model.IsBitFlipChecked, Converter={StaticResource BooleanNegationConverter}, Mode=TwoWay}"/>
IsChecked="{x:Bind Model.IsBitFlipChecked, Converter={StaticResource BooleanNegationConverter}, Mode=TwoWay}"
ToolTipService.ToolTip="{utils:ResourceString Name=fullKeypad/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
<RadioButton x:Name="BitFlip"
x:Uid="bitFlip"
Grid.Column="1"
Style="{StaticResource ConditionalProgKeypadRadioButtonStyle}"
AutomationProperties.AutomationId="bitFlip"
AutomationProperties.Name="{utils:ResourceString Name=bitFlip/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="&#xf7d0;"
IsChecked="{x:Bind Model.IsBitFlipChecked, Mode=TwoWay}"/>
IsChecked="{x:Bind Model.IsBitFlipChecked, Mode=TwoWay}"
ToolTipService.ToolTip="{utils:ResourceString Name=bitFlip/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
</Grid>
<Button x:Name="QwordButton"
x:Uid="qwordButton"
Grid.Column="0"
Grid.ColumnSpan="7"
Style="{StaticResource ProgWordSizeButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=qwordButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="qwordButton"
AutomationProperties.Name="{utils:ResourceString Name=qwordButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind BitLengthButtonPressed, Mode=OneTime}"
CommandParameter="0"
Content="QWORD"/>
<Button x:Name="DwordButton"
x:Uid="dwordButton"
Grid.Column="0"
Grid.ColumnSpan="7"
Style="{StaticResource ProgWordSizeButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=dwordButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="dwordButton"
AutomationProperties.Name="{utils:ResourceString Name=dwordButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind BitLengthButtonPressed, Mode=OneTime}"
CommandParameter="1"
Content="DWORD"
Visibility="Collapsed"/>
<Button x:Name="WordButton"
x:Uid="wordButton"
Grid.Column="0"
Grid.ColumnSpan="7"
Style="{StaticResource ProgWordSizeButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=wordButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="wordButton"
AutomationProperties.Name="{utils:ResourceString Name=wordButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind BitLengthButtonPressed, Mode=OneTime}"
CommandParameter="2"
Content="WORD"
Visibility="Collapsed"/>
<Button x:Name="ByteButton"
x:Uid="byteButton"
Grid.Column="0"
Grid.ColumnSpan="7"
Style="{StaticResource ProgWordSizeButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=byteButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="byteButton"
AutomationProperties.Name="{utils:ResourceString Name=byteButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind BitLengthButtonPressed, Mode=OneTime}"
CommandParameter="3"
Content="BYTE"

View file

@ -9,6 +9,7 @@
xmlns:designdata="using:CalculatorApp.DesignData"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
d:DesignHeight="400"
d:DesignWidth="315"
@ -172,10 +173,10 @@
</MenuFlyout>
</UserControl.Resources>
<Grid x:Name="ProgrammerOperators"
x:Uid="RadixGroup"
MaxHeight="244"
Margin="4,0"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=RadixGroup/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
FlowDirection="LeftToRight">
<Grid.RowDefinitions>
<RowDefinition Height="1*" MinHeight="0"/>
@ -204,48 +205,52 @@
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<controls:RadixButton x:Name="HexButton"
x:Uid="hexButton"
HorizontalAlignment="Stretch"
Style="{ThemeResource ConditionalProgModeRadioButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=hexButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="hexButton"
AutomationProperties.Name="{x:Bind Model.HexDisplayValue_AutomationName, Mode=OneWay}"
Checked="HexButtonChecked"
Content="{x:Bind Model.HexDisplayValue, Mode=OneWay}"
ContextFlyout="{StaticResource ProgrammerOperatorsContextMenu}"
GroupName="BaseConversion"/>
GroupName="BaseConversion"
Tag="{utils:ResourceString Name=hexButton/Tag}"/>
<controls:RadixButton x:Name="DecimalButton"
x:Uid="decimalButton"
Grid.Row="1"
HorizontalAlignment="Stretch"
Style="{ThemeResource ConditionalProgModeRadioButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=decimalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="decimalButton"
AutomationProperties.Name="{x:Bind Model.DecDisplayValue_AutomationName, Mode=OneWay}"
Checked="DecButtonChecked"
Content="{x:Bind Model.DecimalDisplayValue, Mode=OneWay}"
ContextFlyout="{StaticResource ProgrammerOperatorsContextMenu}"
GroupName="BaseConversion"
IsChecked="true"/>
IsChecked="true"
Tag="{utils:ResourceString Name=decimalButton/Tag}"/>
<controls:RadixButton x:Name="OctButton"
x:Uid="octButton"
Grid.Row="2"
HorizontalAlignment="Stretch"
Style="{ThemeResource ConditionalProgModeRadioButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=octButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="octolButton"
AutomationProperties.Name="{x:Bind Model.OctDisplayValue_AutomationName, Mode=OneWay}"
Checked="OctButtonChecked"
Content="{x:Bind Model.OctalDisplayValue, Mode=OneWay}"
ContextFlyout="{StaticResource ProgrammerOperatorsContextMenu}"
GroupName="BaseConversion"/>
GroupName="BaseConversion"
Tag="{utils:ResourceString Name=octButton/Tag}"/>
<controls:RadixButton x:Name="BinaryButton"
x:Uid="binaryButton"
Grid.Row="3"
HorizontalAlignment="Stretch"
Style="{ThemeResource ConditionalProgModeRadioButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=binaryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="binaryButton"
AutomationProperties.Name="{x:Bind Model.BinDisplayValue_AutomationName, Mode=OneWay}"
Checked="BinButtonChecked"
Content="{x:Bind Model.BinaryDisplayValue, Mode=OneWay}"
ContextFlyout="{StaticResource ProgrammerOperatorsContextMenu}"
GroupName="BaseConversion"/>
GroupName="BaseConversion"
Tag="{utils:ResourceString Name=binaryButton/Tag}"/>
</Grid>
</UserControl>

View file

@ -10,6 +10,7 @@
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
d:DesignHeight="395"
d:DesignWidth="315"
@ -227,16 +228,17 @@
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<controls:OperatorPanelListView x:Uid="ProgrammerOperatorPanel"
Grid.ColumnSpan="6"
<controls:OperatorPanelListView Grid.ColumnSpan="6"
Background="{ThemeResource AppOperatorPanelBackground}"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=ProgrammerOperatorPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<controls:OperatorPanelButton x:Name="BitwiseButton"
x:Uid="bitwiseButton"
Style="{StaticResource OperatorPanelButtonStyle}"
AutomationProperties.AutomationId="bitwiseButton"
Glyph="&#xF895;">
AutomationProperties.Name="{utils:ResourceString Name=bitwiseButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Glyph="&#xF895;"
Text="{utils:ResourceString Name=bitwiseButton/Text}">
<controls:OperatorPanelButton.FlyoutMenu>
<Flyout x:Name="BitwiseFlyout"
Windows10version1803:Placement="Bottom"
@ -262,10 +264,12 @@
causing the shortcut keys to be used when the control would normally be disabled.
-->
<controls:CalculatorButton x:Name="AndButton"
x:Uid="andButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=andButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=andButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="andButton"
AutomationProperties.Name="{utils:ResourceString Name=andButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="And"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -273,11 +277,13 @@
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="OrButton"
x:Uid="orButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=orButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=orButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="orButton"
AutomationProperties.Name="{utils:ResourceString Name=orButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Or"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -285,11 +291,12 @@
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="NotButton"
x:Uid="notButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=notButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="notButton"
AutomationProperties.Name="{utils:ResourceString Name=notButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Not"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -297,11 +304,13 @@
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="NandButton"
x:Uid="nandButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=nandButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=nandButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="nandButton"
AutomationProperties.Name="{utils:ResourceString Name=nandButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Nand"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -309,12 +318,14 @@
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="NorButton"
x:Uid="norButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=norButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=norButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="norButton"
AutomationProperties.Name="{utils:ResourceString Name=norButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Nor"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -322,12 +333,14 @@
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="XorButton"
x:Uid="xorButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=xorButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=xorButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="xorButton"
AutomationProperties.Name="{utils:ResourceString Name=xorButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Xor"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -338,10 +351,11 @@
</controls:OperatorPanelButton.FlyoutMenu>
</controls:OperatorPanelButton>
<controls:OperatorPanelButton x:Name="BitShiftButton"
x:Uid="bitShiftButton"
Style="{StaticResource OperatorPanelButtonStyle}"
AutomationProperties.AutomationId="bitShiftButton"
Glyph="&#xE301;">
AutomationProperties.Name="{utils:ResourceString Name=bitShiftButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Glyph="&#xE301;"
Text="{utils:ResourceString Name=bitShiftButton/Text}">
<controls:OperatorPanelButton.FlyoutMenu>
<Flyout x:Name="BitShiftFlyout"
Windows10version1809:AreOpenCloseAnimationsEnabled="False"
@ -350,91 +364,99 @@
Placement="Bottom">
<StackPanel MaxWidth="192" Padding="12">
<RadioButton x:Name="ArithmeticShiftButton"
x:Uid="arithmeticShiftButton"
AutomationProperties.AutomationId="arithmeticShiftButton"
Checked="BitshiftFlyout_Checked"/>
Checked="BitshiftFlyout_Checked"
Content="{utils:ResourceString Name=arithmeticShiftButton/Content}"/>
<RadioButton x:Name="LogicalShiftButton"
x:Uid="logicalShiftButton"
AutomationProperties.AutomationId="logicalShiftButton"
Checked="BitshiftFlyout_Checked"/>
Checked="BitshiftFlyout_Checked"
Content="{utils:ResourceString Name=logicalShiftButton/Content}"/>
<RadioButton x:Name="RotateCircularButton"
x:Uid="rotateCircularButton"
AutomationProperties.AutomationId="rotateCircularButton"
Checked="BitshiftFlyout_Checked"/>
Checked="BitshiftFlyout_Checked"
Content="{utils:ResourceString Name=rotateCircularButton/Content}"/>
<RadioButton x:Name="RotateCarryShiftButton"
x:Uid="rotateCarryShiftButton"
AutomationProperties.AutomationId="rotateCarryShiftButton"
Checked="BitshiftFlyout_Checked"/>
Checked="BitshiftFlyout_Checked"
Content="{utils:ResourceString Name=rotateCarryShiftButton/Content}"/>
</StackPanel>
</Flyout>
</controls:OperatorPanelButton.FlyoutMenu>
</controls:OperatorPanelButton>
</controls:OperatorPanelListView>
<Grid x:Uid="ProgrammerOperators"
Grid.Row="1"
<Grid Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="2"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=ProgrammerOperators/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="RolButton"
x:Uid="rolButton"
Grid.Column="0"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rolButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
x:DeferLoadStrategy="Lazy"
AutomationProperties.AutomationId="rolButton"
AutomationProperties.Name="{utils:ResourceString Name=rolButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Rol"
Content="&#xF88E;"
Visibility="Collapsed"/>
<controls:CalculatorButton x:Name="RorButton"
x:Uid="rorButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rorButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
x:DeferLoadStrategy="Lazy"
AutomationProperties.AutomationId="rorButton"
AutomationProperties.Name="{utils:ResourceString Name=rorButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Ror"
Content="&#xF88F;"
Visibility="Collapsed"/>
<controls:CalculatorButton x:Name="RolCarryButton"
x:Uid="rolCarryButton"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rolCarryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
x:DeferLoadStrategy="Lazy"
AutomationProperties.AutomationId="rolButton"
AutomationProperties.Name="{utils:ResourceString Name=rolCarryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="RolC"
Content="&#xF88E;"
Visibility="Collapsed"/>
<controls:CalculatorButton x:Name="RorCarryButton"
x:Uid="rorCarryButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rorCarryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
x:DeferLoadStrategy="Lazy"
AutomationProperties.AutomationId="rorCarryButton"
AutomationProperties.Name="{utils:ResourceString Name=rorCarryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="RorC"
Content="&#xF88F;"
Visibility="Collapsed"/>
<controls:CalculatorButton x:Name="LshButton"
x:Uid="lshButton"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=lshButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=lshButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="lshButton"
AutomationProperties.Name="{utils:ResourceString Name=lshButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Lsh"
Content="&#xF88E;"/>
<controls:CalculatorButton x:Name="RshButton"
x:Uid="rshButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rshButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=rshButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="rshButton"
AutomationProperties.Name="{utils:ResourceString Name=rshButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Rsh"
Content="&#xF88F;"/>
@ -448,93 +470,102 @@
Content="&#xF88E;"
Visibility="Collapsed"/>
<controls:CalculatorButton x:Name="RshLogicalButton"
x:Uid="rshLogicalButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=rshLogicalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
x:DeferLoadStrategy="Lazy"
AuditoryFeedback="{utils:ResourceString Name=rshLogicalButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="rshLogicalButton"
AutomationProperties.Name="{utils:ResourceString Name=rshLogicalButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="RshL"
Content="&#xF88F;"
Visibility="Collapsed"/>
</Grid>
<Grid x:Uid="DisplayControls"
Grid.Row="1"
<Grid Grid.Row="1"
Grid.Column="4"
Grid.ColumnSpan="2"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=DisplayControls/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="ClearButton"
x:Uid="clearButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearButton"
AutomationProperties.Name="{utils:ResourceString Name=clearButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Clear"
Content="C"
LostFocus="ClearButton_LostFocus"
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<controls:CalculatorButton x:Name="ClearEntryButton"
x:Uid="clearEntryButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearEntryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearEntryButton"
AutomationProperties.Name="{utils:ResourceString Name=clearEntryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="ClearEntry"
Content="CE"
LostFocus="ClearEntryButton_LostFocus"
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="BackSpaceButton"
x:Uid="backSpaceButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=backSpaceButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="backSpaceButton"
AutomationProperties.Name="{utils:ResourceString Name=backSpaceButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Backspace"
Content="&#xE94F;"/>
</Grid>
<controls:CalculatorButton x:Name="OpenParenthesisButton"
x:Uid="openParenthesisButton"
Grid.Row="2"
Grid.Column="2"
Style="{StaticResource ParenthesisCalcButtonStyle}"
FontSize="18"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=openParenthesisButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="openParenthesisButton"
AutomationProperties.Name="{utils:ResourceString Name=openParenthesisButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="OpenParenthesis"
Content="("
GotFocus="OpenParenthesisButton_GotFocus"
Tag="{x:Bind ParenthesisCountToString(Model.OpenParenthesisCount), Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CloseParenthesisButton"
x:Uid="closeParenthesisButton"
Grid.Row="2"
Grid.Column="3"
Style="{StaticResource OperatorButtonStyle}"
FontSize="18"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=closeParenthesisButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="closeParenthesisButton"
AutomationProperties.Name="{utils:ResourceString Name=closeParenthesisButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="CloseParenthesis"
Content=")"/>
<controls:CalculatorButton x:Name="ModButton"
x:Uid="modButton"
Grid.Row="2"
Grid.Column="4"
Style="{StaticResource OperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=modButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=modButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="modButton"
AutomationProperties.Name="{utils:ResourceString Name=modButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Mod"
Content="%"/>
<Grid x:Uid="StandardOperators"
Grid.Row="2"
<Grid Grid.Row="2"
Grid.RowSpan="5"
Grid.Column="5"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=StandardOperators/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
@ -543,58 +574,68 @@
<RowDefinition/>
</Grid.RowDefinitions>
<controls:CalculatorButton x:Name="DivideButton"
x:Uid="divideButton"
Grid.Row="0"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="divideButton"
AutomationProperties.Name="{utils:ResourceString Name=divideButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Divide"
Content="&#xE94A;"/>
<controls:CalculatorButton x:Name="MultiplyButton"
x:Uid="multiplyButton"
Grid.Row="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="multiplyButton"
AutomationProperties.Name="{utils:ResourceString Name=multiplyButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Multiply"
Content="&#xE947;"/>
<controls:CalculatorButton x:Name="MinusButton"
x:Uid="minusButton"
Grid.Row="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="minusButton"
AutomationProperties.Name="{utils:ResourceString Name=minusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Subtract"
Content="&#xE949;"/>
<controls:CalculatorButton x:Name="PlusButton"
x:Uid="plusButton"
Grid.Row="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="plusButton"
AutomationProperties.Name="{utils:ResourceString Name=plusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Add"
Content="&#xE948;"/>
<controls:CalculatorButton x:Name="EqualButton"
x:Uid="equalButton"
Grid.Row="4"
Style="{StaticResource AccentEmphasizedCalcButtonStyle}"
FontSize="12"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="equalButton"
AutomationProperties.Name="{utils:ResourceString Name=equalButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Equals"
Content="&#xE94E;"/>
</Grid>
<Grid x:Uid="NumberPad"
Grid.Row="1"
<Grid Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="1"
Grid.ColumnSpan="5"
AutomationProperties.AutomationId="NumberPad"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
@ -611,61 +652,73 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="AButton"
x:Uid="aButton"
Grid.Row="0"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=aButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=aButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="aButton"
AutomationProperties.Name="{utils:ResourceString Name=aButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="A"
Content="A"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="BButton"
x:Uid="bButton"
Grid.Row="1"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=bButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=bButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="bButton"
AutomationProperties.Name="{utils:ResourceString Name=bButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="B"
Content="B"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CButton"
x:Uid="cButton"
Grid.Row="2"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=cButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=cButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="cButton"
AutomationProperties.Name="{utils:ResourceString Name=cButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="C"
Content="C"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="DButton"
x:Uid="dButton"
Grid.Row="3"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=dButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=dButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="dButton"
AutomationProperties.Name="{utils:ResourceString Name=dButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="D"
Content="D"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="EButton"
x:Uid="eButton"
Grid.Row="4"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=eButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=eButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="eButton"
AutomationProperties.Name="{utils:ResourceString Name=eButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="E"
Content="E"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="FButton"
x:Uid="fButton"
Grid.Row="5"
Grid.Column="0"
Style="{StaticResource NumericButtonStyle12}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=fButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=fButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="fButton"
AutomationProperties.Name="{utils:ResourceString Name=fButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="F"
Content="F"
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
@ -680,13 +733,14 @@
</Grid>
<controls:CalculatorButton x:Name="NegateButton"
x:Uid="negateButton"
Grid.Row="6"
Grid.Column="2"
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
FontSize="12"
FontWeight="Normal"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=negateButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="negateButton"
AutomationProperties.Name="{utils:ResourceString Name=negateButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Negate"
Content="&#xF898;"/>
</Grid>

View file

@ -2,9 +2,11 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="using:CalculatorApp.Controls"
xmlns:common="using:CalculatorApp.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp.ViewModel.Common"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
d:DesignHeight="315"
d:DesignWidth="400"
@ -26,9 +28,9 @@
</UserControl.Resources>
<Grid x:Name="ScientificAngleOperators"
x:Uid="ScientificAngleOperators"
Margin="3,0,3,0"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=ScientificAngleOperators/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" MaxWidth="80"/>
<ColumnDefinition Width="1*" MaxWidth="80"/>
@ -71,34 +73,38 @@
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Button x:Name="DegreeButton"
x:Uid="degButton"
Style="{StaticResource CaptionButtonSmallStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=degButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="degButton"
AutomationProperties.Name="{utils:ResourceString Name=degButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind ButtonPressed}"
CommandParameter="0"
Content="DEG"/>
<Button x:Name="RadianButton"
x:Uid="radButton"
Style="{StaticResource CaptionButtonSmallStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=radButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="radButton"
AutomationProperties.Name="{utils:ResourceString Name=radButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind ButtonPressed}"
CommandParameter="1"
Content="RAD"
Visibility="Collapsed"/>
<Button x:Name="GradsButton"
x:Uid="gradButton"
Style="{StaticResource CaptionButtonSmallStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=gradButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="gradButton"
AutomationProperties.Name="{utils:ResourceString Name=gradButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind ButtonPressed}"
CommandParameter="2"
Content="GRAD"
Visibility="Collapsed"/>
<ToggleButton x:Name="FtoeButton"
x:Uid="ftoeButton"
Grid.Column="1"
Style="{StaticResource CaptionToggleButtonWithIndicatorStyle}"
Background="{ThemeResource SystemControlBackgroundTransparentBrush}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=ftoeButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="ftoeButton"
AutomationProperties.Name="{utils:ResourceString Name=ftoeButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Checked="FToEButton_Toggled"
Content="F-E"
IsChecked="{x:Bind Model.IsFToEChecked, Mode=OneWay}"

View file

@ -3,12 +3,14 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Windows10version1803="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:common="using:CalculatorApp.Common"
xmlns:controls="using:CalculatorApp.Controls"
xmlns:converters="using:CalculatorApp.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
d:DesignHeight="400"
d:DesignWidth="315"
@ -368,16 +370,17 @@
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<controls:OperatorPanelListView x:Uid="ScientificOperatorPanel"
Grid.ColumnSpan="5"
<controls:OperatorPanelListView Grid.ColumnSpan="5"
Background="{ThemeResource AppOperatorPanelBackground}"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=ScientificOperatorPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<controls:OperatorPanelButton x:Name="TrigButton"
x:Uid="trigButton"
Style="{StaticResource OperatorPanelButtonStyle}"
AutomationProperties.AutomationId="trigButton"
Glyph="&#xF892;">
AutomationProperties.Name="{utils:ResourceString Name=trigButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Glyph="&#xF892;"
Text="{utils:ResourceString Name=trigButton/Text}">
<controls:OperatorPanelButton.FlyoutMenu>
<Flyout x:Name="Trigflyout"
Windows10version1803:Placement="Bottom"
@ -404,21 +407,21 @@
causing the shortcut keys to be used when the control would normally be disabled.
-->
<ToggleButton x:Name="TrigShiftButton"
x:Uid="trigShiftButton"
Style="{StaticResource CaptionToggleButtonStyle}"
FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="{StaticResource CalcOperatorCaptionSize}"
AutomationProperties.AutomationId="trigShiftButton"
AutomationProperties.Name="{utils:ResourceString Name=trigShiftButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Checked="TrigFlyoutShift_Toggle"
Content="&#xF897;"
Unchecked="TrigFlyoutShift_Toggle"
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<ToggleButton x:Name="HypButton"
x:Uid="hypButton"
Grid.Row="1"
Style="{StaticResource CaptionToggleButtonStyle}"
AutomationProperties.AutomationId="hypShiftButton"
AutomationProperties.Name="{utils:ResourceString Name=hypButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Checked="TrigFlyoutHyp_Toggle"
Content="hyp"
IsEnabledChanged="ShiftButton_IsEnabledChanged"
@ -441,10 +444,11 @@
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="SinButton"
x:Uid="sinButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=sinButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="sinButton"
AutomationProperties.Name="{utils:ResourceString Name=sinButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sin"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -452,11 +456,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CosButton"
x:Uid="cosButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=cosButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="cosButton"
AutomationProperties.Name="{utils:ResourceString Name=cosButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Cos"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -464,11 +469,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="TanButton"
x:Uid="tanButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=tanButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="tanButton"
AutomationProperties.Name="{utils:ResourceString Name=tanButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Tan"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -476,11 +482,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="SecButton"
x:Uid="secButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=secButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="secButton"
AutomationProperties.Name="{utils:ResourceString Name=secButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sec"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -488,12 +495,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CscButton"
x:Uid="cscButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=cscButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="cscButton"
AutomationProperties.Name="{utils:ResourceString Name=cscButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Csc"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -501,12 +509,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CotButton"
x:Uid="cotButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=cotButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="cotButton"
AutomationProperties.Name="{utils:ResourceString Name=cotButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Cot"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -530,10 +539,11 @@
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="InvsinButton"
x:Uid="invsinButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invsinButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invsinButton"
AutomationProperties.Name="{utils:ResourceString Name=invsinButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvSin"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -541,11 +551,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcosButton"
x:Uid="invcosButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invcosButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invcosButton"
AutomationProperties.Name="{utils:ResourceString Name=invcosButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCos"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -553,11 +564,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvtanButton"
x:Uid="invtanButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invtanButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invtanButton"
AutomationProperties.Name="{utils:ResourceString Name=invtanButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvTan"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -565,11 +577,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvsecButton"
x:Uid="invsecButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invsecButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invsecButton"
AutomationProperties.Name="{utils:ResourceString Name=invsecButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvSec"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -577,12 +590,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcscButton"
x:Uid="invcscButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invcscButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invcscButton"
AutomationProperties.Name="{utils:ResourceString Name=invcscButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCsc"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -590,12 +604,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcotButton"
x:Uid="invcotButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=invcotButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="invcotButton"
AutomationProperties.Name="{utils:ResourceString Name=invcotButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCot"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -619,10 +634,11 @@
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="SinhButton"
x:Uid="sinhButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=sinhButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="sinhButton"
AutomationProperties.Name="{utils:ResourceString Name=sinhButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sinh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -630,11 +646,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CoshButton"
x:Uid="coshButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=coshButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="coshButton"
AutomationProperties.Name="{utils:ResourceString Name=coshButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Cosh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -642,11 +659,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="TanhButton"
x:Uid="tanhButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=tanhButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="tanhButton"
AutomationProperties.Name="{utils:ResourceString Name=tanhButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Tanh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -654,11 +672,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="SechButton"
x:Uid="sechButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=sechButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="sechButton"
AutomationProperties.Name="{utils:ResourceString Name=sechButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sech"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -666,12 +685,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CschButton"
x:Uid="cschButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=cschButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="cschButton"
AutomationProperties.Name="{utils:ResourceString Name=cschButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Csch"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -679,12 +699,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CothButton"
x:Uid="cothButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=cothButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="cothButton"
AutomationProperties.Name="{utils:ResourceString Name=cothButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Coth"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -707,10 +728,11 @@
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="InvsinhButton"
x:Uid="invsinhButton"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invsinhButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invsinhButton"
AutomationProperties.Name="{utils:ResourceString Name=invsinhButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvSinh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -718,11 +740,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcoshButton"
x:Uid="invcoshButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invcoshButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invcoshButton"
AutomationProperties.Name="{utils:ResourceString Name=invcoshButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCosh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -730,11 +753,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvtanhButton"
x:Uid="invtanhButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invtanhButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invtanhButton"
AutomationProperties.Name="{utils:ResourceString Name=invtanhButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvTanh"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -742,11 +766,12 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvsechButton"
x:Uid="invsechButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invsechButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invsechButton"
AutomationProperties.Name="{utils:ResourceString Name=invsechButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvSech"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -754,12 +779,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcschButton"
x:Uid="invcschButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invcschButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invcschButton"
AutomationProperties.Name="{utils:ResourceString Name=invcschButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCsch"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -767,12 +793,13 @@
IsEnabled="{x:Bind TrigButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="InvcothButton"
x:Uid="invcothButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=invcothButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AutomationProperties.AutomationId="invcothButton"
AutomationProperties.Name="{utils:ResourceString Name=invcothButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="InvCoth"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -785,10 +812,11 @@
</controls:OperatorPanelButton>
<controls:OperatorPanelButton x:Name="FuncButton"
x:Uid="funcButton"
Style="{StaticResource OperatorPanelButtonStyle}"
AutomationProperties.AutomationId="funcButton"
Glyph="&#xF893;">
AutomationProperties.Name="{utils:ResourceString Name=funcButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Glyph="&#xF893;"
Text="{utils:ResourceString Name=funcButton/Text}">
<controls:OperatorPanelButton.FlyoutMenu>
<Flyout x:Name="FuncFlyout"
@ -810,9 +838,10 @@
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="AbsFlyoutButton"
x:Uid="absButton"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=absButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="absButton"
AutomationProperties.Name="{utils:ResourceString Name=absButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Abs"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -820,10 +849,11 @@
IsEnabled="{x:Bind FuncButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="FloorButton"
x:Uid="floorButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=floorButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="floorButton"
AutomationProperties.Name="{utils:ResourceString Name=floorButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Floor"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -831,10 +861,11 @@
IsEnabled="{x:Bind FuncButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CeilButton"
x:Uid="ceilButton"
Grid.Column="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=ceilButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="ceilButton"
AutomationProperties.Name="{utils:ResourceString Name=ceilButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Ceil"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -842,11 +873,12 @@
IsEnabled="{x:Bind FuncButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="RandButton"
x:Uid="randButton"
Grid.Row="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSizeSmall}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=randButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="randButton"
AutomationProperties.Name="{utils:ResourceString Name=randButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Rand"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -854,11 +886,12 @@
IsEnabled="{x:Bind FuncButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="DmsButton"
x:Uid="dmsButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=dmsButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="dmsButton"
AutomationProperties.Name="{utils:ResourceString Name=dmsButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="DMS"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -866,11 +899,11 @@
IsEnabled="{x:Bind FuncButton.IsEnabled, Mode=OneWay}"/>
<controls:CalculatorButton x:Name="DegreesButton"
x:Uid="degreesButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
AutomationProperties.AutomationId="degreesButton"
AutomationProperties.Name="{utils:ResourceString Name=degreesButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Degrees"
Click="FlyoutButton_Clicked"
Command="{x:Bind Model.ButtonPressed}"
@ -883,86 +916,90 @@
</controls:OperatorPanelListView>
<ToggleButton x:Name="ShiftButton"
x:Uid="shiftButton"
Grid.Row="1"
Style="{StaticResource CaptionToggleEmphasizedButtonStyle}"
FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="{StaticResource CalcOperatorCaptionSize}"
AllowFocusOnInteraction="False"
AutomationProperties.AutomationId="shiftButton"
AutomationProperties.Name="{utils:ResourceString Name=shiftButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Checked="ShiftButton_Check"
Content="&#xF897;"
IsEnabledChanged="ShiftButton_IsEnabledChanged"
Unchecked="ShiftButton_Check"
AllowFocusOnInteraction="False"
/>
Unchecked="ShiftButton_Check"/>
<controls:CalculatorButton x:Name="PiButton"
x:Uid="piButton"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSize}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=piButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="piButton"
AutomationProperties.Name="{utils:ResourceString Name=piButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Pi"
Content="&#xf7cf;"/>
<controls:CalculatorButton x:Name="EulerButton"
x:Uid="eulerButton"
Grid.Row="1"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="{StaticResource CalcOperatorCaptionSize}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=eulerButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="eulerButton"
AutomationProperties.Name="{utils:ResourceString Name=eulerButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Euler"
Content="e"/>
<Grid x:Name="DisplayControls"
x:Uid="DisplayControls"
Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="3"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=DisplayControls/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="ClearEntryButton"
x:Uid="clearEntryButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearEntryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearEntryButton"
AutomationProperties.Name="{utils:ResourceString Name=clearEntryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="ClearEntry"
Content="CE"
LostFocus="ClearEntryButton_LostFocus"
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
<controls:CalculatorButton x:Name="ClearButton"
x:Uid="clearButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearButton"
AutomationProperties.Name="{utils:ResourceString Name=clearButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Clear"
Content="C"
LostFocus="ClearButton_LostFocus"
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<controls:CalculatorButton x:Name="BackSpaceButton"
x:Uid="backSpaceButton"
Grid.Column="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=backSpaceButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="backSpaceButton"
AutomationProperties.Name="{utils:ResourceString Name=backSpaceButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Backspace"
Content="&#xE94F;"/>
</Grid>
<Grid x:Uid="ScientificFunctions"
Grid.Row="2"
<Grid Grid.Row="2"
Grid.RowSpan="6"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=ScientificFunctions/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<!-- Scientific Row 1 -->
<Grid x:Name="Row1">
<Grid.RowDefinitions>
@ -975,49 +1012,57 @@
</Grid.RowDefinitions>
<controls:CalculatorButton x:Name="XPower2Button"
x:Uid="xpower2Button"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=xpower2Button/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="xpower2Button"
AutomationProperties.Name="{utils:ResourceString Name=xpower2Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="XPower2"
Content="&#xf7c8;"/>
<controls:CalculatorButton x:Name="SquareRootButton"
x:Uid="squareRootButton"
Grid.Row="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=squareRootButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="squareRootButton"
AutomationProperties.Name="{utils:ResourceString Name=squareRootButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sqrt"
Content="&#xF899;"/>
<controls:CalculatorButton x:Name="PowerButton"
x:Uid="powerButton"
Grid.Row="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=powerButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=powerButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AuditoryFeedback="{utils:ResourceString Name=powerButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="powerButton"
AutomationProperties.Name="{utils:ResourceString Name=powerButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="XPowerY"
Content="&#xf7ca;"/>
<controls:CalculatorButton x:Name="PowerOf10Button"
x:Uid="powerOf10Button"
Grid.Row="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=powerOf10Button/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="powerOf10Button"
AutomationProperties.Name="{utils:ResourceString Name=powerOf10Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="TenPowerX"
Content="&#xF7CC;"/>
<controls:CalculatorButton x:Name="LogBase10Button"
x:Uid="logBase10Button"
Grid.Row="4"
Style="{StaticResource OperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=logBase10Button/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="logBase10Button"
AutomationProperties.Name="{utils:ResourceString Name=logBase10Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="LogBase10"
Content="log"/>
<controls:CalculatorButton x:Name="LogBaseEButton"
x:Uid="logBaseEButton"
Grid.Row="5"
Style="{StaticResource OperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=logBaseEButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="logBaseEButton"
AutomationProperties.Name="{utils:ResourceString Name=logBaseEButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="LogBaseE"
Content="ln"/>
</Grid>
@ -1033,54 +1078,61 @@
<RowDefinition/>
</Grid.RowDefinitions>
<controls:CalculatorButton x:Name="XPower3Button"
x:Uid="xpower3Button"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=xpower3Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="xpower3Button"
AutomationProperties.Name="{utils:ResourceString Name=xpower3Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Cube"
Click="ShiftButton_Uncheck"
Content="&#xf7cb;"/>
<controls:CalculatorButton x:Name="CubeRootButton"
x:Uid="cubeRootButton"
Grid.Row="1"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=cubeRootButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="cubeRootButton"
AutomationProperties.Name="{utils:ResourceString Name=cubeRootButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="CubeRoot"
Click="ShiftButton_Uncheck"
Content="&#xF881;"/>
<controls:CalculatorButton x:Name="YSquareRootButton"
x:Uid="ySquareRootButton"
Grid.Row="2"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=ySquareRootButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AuditoryFeedback="{utils:ResourceString Name=ySquareRootButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="ySquareRootButton"
AutomationProperties.Name="{utils:ResourceString Name=ySquareRootButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="YRootX"
Click="ShiftButton_Uncheck"
Content="&#xf7cd;"/>
<controls:CalculatorButton x:Name="TwoPowerXButton"
x:Uid="twoPowerXButton"
Grid.Row="3"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=twoPowerXButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="twoPowerXButton"
AutomationProperties.Name="{utils:ResourceString Name=twoPowerXButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="TwoPowerX"
Click="ShiftButton_Uncheck"
Content="&#xF882;"/>
<controls:CalculatorButton x:Name="LogBaseY"
x:Uid="logBaseY"
Grid.Row="4"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=logBaseY/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
AutomationProperties.AutomationId="logBaseY"
AutomationProperties.Name="{utils:ResourceString Name=logBaseY/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="LogBaseY"
Click="ShiftButton_Uncheck"
Content="&#xF883;"/>
<controls:CalculatorButton x:Name="PowerOfEButton"
x:Uid="powerOfEButton"
Grid.Row="5"
Style="{StaticResource EmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=powerOfEButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
AutomationProperties.AutomationId="powerOfEButton"
AutomationProperties.Name="{utils:ResourceString Name=powerOfEButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="EPowerX"
Click="ShiftButton_Uncheck"
Content="&#xf7ce;"/>
@ -1099,75 +1151,83 @@
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="InvertButton"
x:Uid="invertButton"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=invertButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="invertButton"
AutomationProperties.Name="{utils:ResourceString Name=invertButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Invert"
Content="&#xf7c9;"/>
<controls:CalculatorButton x:Name="AbsButton"
x:Uid="absButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=absButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="absButton"
AutomationProperties.Name="{utils:ResourceString Name=absButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Abs"
Content="&#xF884;"/>
<controls:CalculatorButton x:Name="ExpButton"
x:Uid="expButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=expButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="expButton"
AutomationProperties.Name="{utils:ResourceString Name=expButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Exp"
Content="exp"/>
<controls:CalculatorButton x:Name="ModButton"
x:Uid="modButton"
Grid.Column="3"
Style="{StaticResource OperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=modButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=modButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="modButton"
AutomationProperties.Name="{utils:ResourceString Name=modButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Mod"
Content="mod"/>
</Grid>
<controls:CalculatorButton x:Name="OpenParenthesisButton"
x:Uid="openParenthesisButton"
Grid.Row="3"
Grid.Column="1"
Style="{StaticResource ParenthesisCalcButtonStyle}"
FontSize="19"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=openParenthesisButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="openParenthesisButton"
AutomationProperties.Name="{utils:ResourceString Name=openParenthesisButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="OpenParenthesis"
Content="("
GotFocus="OpenParenthesisButton_GotFocus"
Tag="{x:Bind ParenthesisCountToString(Model.OpenParenthesisCount), Mode=OneWay}"/>
<controls:CalculatorButton x:Name="CloseParenthesisButton"
x:Uid="closeParenthesisButton"
Grid.Row="3"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="19"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=closeParenthesisButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="closeParenthesisButton"
AutomationProperties.Name="{utils:ResourceString Name=closeParenthesisButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="CloseParenthesis"
Content=")"/>
<controls:CalculatorButton x:Name="FactorialButton"
x:Uid="factorialButton"
Grid.Row="3"
Grid.Column="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="18"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=factorialButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="factorialButton"
AutomationProperties.Name="{utils:ResourceString Name=factorialButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Factorial"
Content="&#xF887;"/>
<Grid x:Name="StandardOperators"
x:Uid="StandardOperators"
Grid.Row="3"
Grid.RowSpan="5"
Grid.Column="4"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=StandardOperators/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
@ -1176,65 +1236,76 @@
<RowDefinition/>
</Grid.RowDefinitions>
<controls:CalculatorButton x:Name="DivideButton"
x:Uid="divideButton"
Grid.Row="0"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="divideButton"
AutomationProperties.Name="{utils:ResourceString Name=divideButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Divide"
Content="&#xE94A;"/>
<controls:CalculatorButton x:Name="MultiplyButton"
x:Uid="multiplyButton"
Grid.Row="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="multiplyButton"
AutomationProperties.Name="{utils:ResourceString Name=multiplyButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Multiply"
Content="&#xE947;"/>
<controls:CalculatorButton x:Name="MinusButton"
x:Uid="minusButton"
Grid.Row="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="minusButton"
AutomationProperties.Name="{utils:ResourceString Name=minusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Subtract"
Content="&#xE949;"/>
<controls:CalculatorButton x:Name="PlusButton"
x:Uid="plusButton"
Grid.Row="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="plusButton"
AutomationProperties.Name="{utils:ResourceString Name=plusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Add"
Content="&#xE948;"/>
<controls:CalculatorButton x:Name="EqualButton"
x:Uid="equalButton"
Grid.Row="4"
Style="{StaticResource AccentEmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="equalButton"
AutomationProperties.Name="{utils:ResourceString Name=equalButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Equals"
Content="&#xE94E;"/>
</Grid>
<controls:CalculatorButton x:Name="NegateButton"
x:Uid="negateButton"
Grid.Row="7"
Grid.Column="1"
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
FontSize="16"
FontWeight="Normal"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=negateButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="negateButton"
AutomationProperties.Name="{utils:ResourceString Name=negateButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Negate"
Content="&#xF898;"
IsEnabled="{x:Bind Model.IsNegateEnabled, Mode=OneWay}"/>
<local:NumberPad x:Name="NumberPad"
x:Uid="NumberPad"
Grid.Row="4"
Grid.RowSpan="4"
Grid.Column="1"
Grid.ColumnSpan="3"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonStyle="{StaticResource NumericButtonStyle24}"/>
</Grid>
</UserControl>

View file

@ -7,6 +7,7 @@
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
XYFocusKeyboardNavigation="Enabled"
mc:Ignorable="d">
@ -170,11 +171,11 @@
</VisualStateManager.VisualStateGroups>
<Grid x:Name="DisplayControls"
x:Uid="DisplayControls"
Grid.Row="0"
Grid.Column="2"
Grid.ColumnSpan="4"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=DisplayControls/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="PercentColumn"/>
<ColumnDefinition/>
@ -182,44 +183,48 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="PercentButton"
x:Uid="percentButton"
Grid.Column="0"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=percentButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="percentButton"
AutomationProperties.Name="{utils:ResourceString Name=percentButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Percent"
Content="&#xE94C;"/>
<controls:CalculatorButton x:Name="ClearEntryButton"
x:Uid="clearEntryButton"
Grid.Column="1"
Style="{StaticResource OperatorButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearEntryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearEntryButton"
AutomationProperties.Name="{utils:ResourceString Name=clearEntryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="ClearEntry"
Content="CE"/>
<controls:CalculatorButton x:Name="ClearButton"
x:Uid="clearButton"
Grid.Column="2"
Style="{StaticResource OperatorButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="clearButton"
AutomationProperties.Name="{utils:ResourceString Name=clearButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Clear"
Content="C"/>
<controls:CalculatorButton x:Name="BackSpaceButton"
x:Uid="backSpaceButton"
Grid.Column="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=backSpaceButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="backSpaceButton"
AutomationProperties.Name="{utils:ResourceString Name=backSpaceButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Backspace"
Content="&#xE94F;"/>
</Grid>
<Grid x:Name="StandardFunctions"
x:Uid="StandardFunctions"
Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="4"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=StandardFunctions/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition x:Name="FnR1" Height="0"/>
@ -234,35 +239,38 @@
<ColumnDefinition x:Name="FnC3" Width="1*"/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="InvertButton"
x:Uid="invertButton"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="18"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=invertButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="invertButton"
AutomationProperties.Name="{utils:ResourceString Name=invertButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Invert"
Content="&#xf7c9;"/>
<controls:CalculatorButton x:Name="XPower2Button"
x:Uid="xpower2Button"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="18"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=xpower2Button/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="xpower2Button"
AutomationProperties.Name="{utils:ResourceString Name=xpower2Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="XPower2"
Content="&#xf7c8;"/>
<controls:CalculatorButton x:Name="SquareRootButton"
x:Uid="squareRootButton"
Grid.Column="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=squareRootButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="squareRootButton"
AutomationProperties.Name="{utils:ResourceString Name=squareRootButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Sqrt"
Content="&#xF899;"/>
</Grid>
<Grid x:Name="StandardOperators"
x:Uid="StandardOperators"
Grid.Row="1"
Grid.RowSpan="5"
Grid.Column="5"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=StandardOperators/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
@ -271,58 +279,69 @@
<RowDefinition/>
</Grid.RowDefinitions>
<controls:CalculatorButton x:Name="DivideButton"
x:Uid="divideButton"
Grid.Row="0"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=divideButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="divideButton"
AutomationProperties.Name="{utils:ResourceString Name=divideButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Divide"
Content="&#xE94A;"/>
<controls:CalculatorButton x:Name="MultiplyButton"
x:Uid="multiplyButton"
Grid.Row="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=multiplyButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="multiplyButton"
AutomationProperties.Name="{utils:ResourceString Name=multiplyButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Multiply"
Content="&#xE947;"/>
<controls:CalculatorButton x:Name="MinusButton"
x:Uid="minusButton"
Grid.Row="2"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=minusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="minusButton"
AutomationProperties.Name="{utils:ResourceString Name=minusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Subtract"
Content="&#xE949;"/>
<controls:CalculatorButton x:Name="PlusButton"
x:Uid="plusButton"
Grid.Row="3"
Style="{StaticResource SymbolOperatorButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AuditoryFeedback="{utils:ResourceString Name=plusButton/[using:CalculatorApp.Controls]CalculatorButton/AuditoryFeedback}"
AutomationProperties.AutomationId="plusButton"
AutomationProperties.Name="{utils:ResourceString Name=plusButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Add"
Content="&#xE948;"/>
<controls:CalculatorButton x:Name="EqualButton"
x:Uid="equalButton"
Grid.Row="4"
Style="{StaticResource AccentEmphasizedCalcButtonStyle}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=equalButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="equalButton"
AutomationProperties.Name="{utils:ResourceString Name=equalButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Equals"
Content="&#xE94E;"/>
</Grid>
<local:NumberPad x:Name="NumberPad"
x:Uid="NumberPad"
Grid.Row="2"
Grid.RowSpan="4"
Grid.Column="2"
Grid.ColumnSpan="3"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonStyle="{StaticResource NumericButtonStyle24}"/>
<controls:CalculatorButton x:Name="NegateButton"
x:Uid="negateButton"
Grid.Row="5"
Grid.Column="2"
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
FontWeight="Normal"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=negateButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="negateButton"
AutomationProperties.Name="{utils:ResourceString Name=negateButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Negate"
Content="&#xF898;"/>
</Grid>

View file

@ -12,6 +12,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
d:DesignHeight="300"
d:DesignWidth="400"
Loaded="OnLoaded"
@ -1001,11 +1002,11 @@
<!-- ComboBox for Date Calculation options -->
<ComboBox x:Name="DateCalculationOption"
x:Uid="DateCalculationOption"
Grid.Row="1"
Margin="-12,0,0,0"
Background="{ThemeResource SubtleFillColorTransparentBrush}"
BorderThickness="{ThemeResource ControlBorderThemeThickness}"
AutomationProperties.Name="{utils:ResourceString Name=DateCalculationOption/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
SelectedIndex="0">
<ComboBox.Resources>
<ResourceDictionary>
@ -1026,12 +1027,12 @@
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</ComboBox.Resources>
<ComboBoxItem x:Uid="Date_DifferenceOption"
MinWidth="276"
<ComboBoxItem MinWidth="276"
Content="{utils:ResourceString Name=Date_DifferenceOption/Content}"
ContentTemplate="{StaticResource ComboBoxItemContentTemplate}"
IsSelected="{Binding IsDateDiffMode, Mode=TwoWay}"/>
<ComboBoxItem x:Uid="Date_AddSubtractOption"
MinWidth="276"
<ComboBoxItem MinWidth="276"
Content="{utils:ResourceString Name=Date_AddSubtractOption/Content}"
ContentTemplate="{StaticResource ComboBoxItemContentTemplate}"
IsSelected="{Binding IsDateDiffMode, Converter={StaticResource BooleanNegationConverter}, Mode=TwoWay}"/>
</ComboBox>
@ -1054,28 +1055,28 @@
<!-- From Date -->
<CalendarDatePicker x:Name="DateDiff_FromDate"
x:Uid="DateDiff_FromHeader"
Grid.Row="1"
Style="{StaticResource DateCalculation_CalendarPickerStyle}"
CalendarViewStyle="{StaticResource DateCalculation_CalendarViewStyle}"
Closed="CalendarFlyoutClosed"
DateChanged="FromDate_DateChanged"/>
DateChanged="FromDate_DateChanged"
Header="{utils:ResourceString Name=DateDiff_FromHeader/Header}"/>
<!-- To Date -->
<CalendarDatePicker x:Name="DateDiff_ToDate"
x:Uid="DateDiff_ToHeader"
Grid.Row="3"
Margin="0,0,0,0"
Style="{StaticResource DateCalculation_CalendarPickerStyle}"
CalendarViewStyle="{StaticResource DateCalculation_CalendarViewStyle}"
Closed="CalendarFlyoutClosed"
DateChanged="ToDate_DateChanged"/>
DateChanged="ToDate_DateChanged"
Header="{utils:ResourceString Name=DateDiff_ToHeader/Header}"/>
<!-- Difference Result -->
<TextBlock x:Uid="Date_DifferenceLabel"
Grid.Row="5"
<TextBlock Grid.Row="5"
Margin="0,0,0,0"
Style="{ThemeResource DateCalculation_CaptionTextStyle}"/>
Style="{ThemeResource DateCalculation_CaptionTextStyle}"
Text="{utils:ResourceString Name=Date_DifferenceLabel/Text}"/>
<TextBlock x:Name="DateDiffAllUnitsResultLabel"
Grid.Row="6"
Margin="0,4,0,0"
@ -1114,13 +1115,13 @@
<!-- From Date -->
<CalendarDatePicker x:Name="AddSubtract_FromDate"
x:Uid="AddSubtract_Date_FromHeader"
Grid.Row="1"
Margin="0,0,0,0"
Style="{StaticResource DateCalculation_CalendarPickerStyle}"
CalendarViewStyle="{StaticResource DateCalculation_CalendarViewStyle}"
Closed="CalendarFlyoutClosed"
DateChanged="AddSubtract_DateChanged"/>
DateChanged="AddSubtract_DateChanged"
Header="{utils:ResourceString Name=AddSubtract_Date_FromHeader/Header}"/>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
@ -1129,20 +1130,20 @@
</Grid.ColumnDefinitions>
<RadioButton x:Name="AddOption"
x:Uid="AddOption"
MinWidth="80"
MaxWidth="160"
VerticalAlignment="Top"
Checked="AddSubtractOption_Checked"
Content="{utils:ResourceString Name=AddOption/Content}"
IsChecked="{Binding IsAddMode, Mode=TwoWay}"/>
<RadioButton x:Name="SubtractOption"
x:Uid="SubtractOption"
Grid.Column="1"
MinWidth="80"
MaxWidth="160"
Margin="20,0,0,0"
VerticalAlignment="Top"
Checked="AddSubtractOption_Checked"
Content="{utils:ResourceString Name=SubtractOption/Content}"
IsChecked="{Binding IsAddMode, Converter={StaticResource BooleanNegationConverter}, Mode=TwoWay}"/>
</Grid>
@ -1162,9 +1163,9 @@
</Grid.ColumnDefinitions>
<TextBlock x:Name="YearsLabel"
x:Uid="YearsLabel"
Margin="0,0,0,6"
Style="{StaticResource DateCalculation_CaptionTextStyle}"
Text="{utils:ResourceString Name=YearsLabel/Text}"
TextWrapping="Wrap"/>
<ComboBox x:Name="YearsValue"
Grid.Row="1"
@ -1175,10 +1176,10 @@
SelectedIndex="{Binding YearsOffset, Mode=TwoWay}"
SelectionChanged="OffsetValue_Changed"/>
<TextBlock x:Name="MonthsLabel"
x:Uid="MonthsLabel"
Grid.Column="1"
Margin="12,0,12,6"
Style="{StaticResource DateCalculation_CaptionTextStyle}"
Text="{utils:ResourceString Name=MonthsLabel/Text}"
TextWrapping="Wrap"/>
<ComboBox x:Name="MonthsValue"
Grid.Row="1"
@ -1191,10 +1192,10 @@
SelectedIndex="{Binding MonthsOffset, Mode=TwoWay}"
SelectionChanged="OffsetValue_Changed"/>
<TextBlock x:Name="DaysLabel"
x:Uid="DaysLabel"
Grid.Column="2"
Margin="0,0,0,6"
Style="{StaticResource DateCalculation_CaptionTextStyle}"
Text="{utils:ResourceString Name=DaysLabel/Text}"
TextWrapping="Wrap"/>
<ComboBox x:Name="DaysValue"
Grid.Row="1"
@ -1208,9 +1209,9 @@
</Grid>
<!-- Resulting Date -->
<TextBlock x:Uid="DateLabel"
Grid.Row="7"
Style="{StaticResource DateCalculation_CaptionTextStyle}"/>
<TextBlock Grid.Row="7"
Style="{StaticResource DateCalculation_CaptionTextStyle}"
Text="{utils:ResourceString Name=DateLabel/Text}"/>
<TextBlock x:Name="DateResultLabel"
Grid.Row="8"

View file

@ -1,4 +1,4 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CalculatorApp">

View file

@ -9,6 +9,7 @@
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vm="using:CalculatorApp.ViewModel"
d:DesignHeight="300"
d:DesignWidth="400"
@ -114,7 +115,6 @@
Text="="/>
<TextBox x:Name="ValueTextBox"
x:Uid="VariableValueTextBox"
Grid.Column="2"
Margin="6,0,0,0"
Padding="0,10,0,0"
@ -122,6 +122,7 @@
VerticalAlignment="Center"
Style="{StaticResource ThemedVariableTextBoxStyle}"
FontStyle="Italic"
AutomationProperties.Name="{utils:ResourceString Name=VariableValueTextBox/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
GotFocus="TextBoxGotFocus"
KeyDown="TextBoxKeyDown"
LosingFocus="TextBoxLosingFocus"
@ -132,18 +133,18 @@
</TextBox>
</Grid>
<Slider x:Uid="VariableValueSlider"
Grid.Column="1"
<Slider Grid.Column="1"
Margin="8,0,8,-6"
VerticalAlignment="Center"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
AutomationProperties.Name="{utils:ResourceString Name=VariableValueSlider/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
DataContext="{x:Bind}"
SmallChange="{x:Bind Step, Mode=TwoWay}"
StepFrequency="{x:Bind Step, Mode=TwoWay}"
ValueChanged="Slider_ValueChanged"
Value="{x:Bind Value, Mode=TwoWay}"
Maximum="{x:Bind Max, Mode=TwoWay}"
Minimum="{x:Bind Min, Mode=TwoWay}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"/>
Minimum="{x:Bind Min, Mode=TwoWay}"/>
<Grid Grid.Row="1"
Padding="8,0,8,8"
@ -159,17 +160,17 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Uid="MinTextBlock"
Margin="0,12,4,0"
<TextBlock Margin="0,12,4,0"
VerticalAlignment="Center"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
FontSize="12"/>
FontSize="12"
Text="{utils:ResourceString Name=MinTextBlock/Text}"/>
<TextBox x:Name="MinTextBox"
x:Uid="VariableMinTextBox"
Grid.Column="1"
Padding="2,16,2,2"
Style="{StaticResource ThemedVariableTextBoxStyle}"
FontSize="12"
AutomationProperties.Name="{utils:ResourceString Name=VariableMinTextBox/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
GotFocus="TextBoxGotFocus"
KeyDown="TextBoxKeyDown"
LosingFocus="TextBoxLosingFocus"
@ -184,18 +185,18 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Uid="StepTextBlock"
Margin="0,12,4,0"
<TextBlock Margin="0,12,4,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
FontSize="12"/>
FontSize="12"
Text="{utils:ResourceString Name=StepTextBlock/Text}"/>
<TextBox x:Name="StepTextBox"
x:Uid="VariableStepTextBox"
Grid.Column="1"
Padding="2,16,2,2"
Style="{StaticResource ThemedVariableTextBoxStyle}"
FontSize="12"
AutomationProperties.Name="{utils:ResourceString Name=VariableStepTextBox/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
GotFocus="TextBoxGotFocus"
KeyDown="TextBoxKeyDown"
LosingFocus="TextBoxLosingFocus"
@ -210,17 +211,17 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Uid="MaxTextBlock"
Margin="0,12,4,0"
<TextBlock Margin="0,12,4,0"
VerticalAlignment="Center"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
FontSize="12"/>
FontSize="12"
Text="{utils:ResourceString Name=MaxTextBlock/Text}"/>
<TextBox x:Name="MaxTextBox"
x:Uid="VariableMaxTextBox"
Grid.Column="1"
Padding="2,16,2,2"
Style="{StaticResource ThemedVariableTextBoxStyle}"
FontSize="12"
AutomationProperties.Name="{utils:ResourceString Name=VariableMaxTextBox/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
GotFocus="TextBoxGotFocus"
KeyDown="TextBoxKeyDown"
LosingFocus="TextBoxLosingFocus"
@ -233,14 +234,15 @@
</Grid>
<ToggleButton Name="VariableAreaSettings"
x:Uid="VariableAreaSettings"
Margin="0,6,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
BorderThickness="0"
AutomationProperties.Name="{utils:ResourceString Name=VariableAreaSettings/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="VariableAreaClicked"
IsChecked="{x:Bind SliderSettingsVisible, Mode=OneWay}"
Tapped="VariableAreaButtonTapped">
Tapped="VariableAreaButtonTapped"
ToolTipService.ToolTip="{utils:ResourceString Name=VariableAreaSettings/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<ToggleButton.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
@ -649,7 +651,6 @@
</ToggleButton.Style>
</ToggleButton>
<controls:MathRichEditBox x:Name="MathRichEditBox"
x:Uid="mathRichEditBox"
Grid.Column="1"
MinHeight="44"
Padding="{TemplateBinding Padding}"
@ -663,22 +664,23 @@
InputScope="Text"
MathText="{Binding MathEquation, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"
MaxLength="2048"
PlaceholderText="{utils:ResourceString Name=mathRichEditBox/PlaceholderText}"
TextWrapping="NoWrap">
<controls:MathRichEditBox.ContextFlyout>
<MenuFlyout x:Name="MathRichEditContextMenu">
<MenuFlyoutItem x:Name="CutMenuItem"
x:Uid="cutEquationMenuItem"
Icon="Cut"/>
Icon="Cut"
Text="{utils:ResourceString Name=cutEquationMenuItem/Text}"/>
<MenuFlyoutItem x:Name="CopyMenuItem"
x:Uid="copyEquationMenuItem"
Icon="Copy"/>
Icon="Copy"
Text="{utils:ResourceString Name=copyEquationMenuItem/Text}"/>
<MenuFlyoutItem x:Name="PasteMenuItem"
x:Uid="pasteEquationMenuItem"
Icon="Paste"/>
Icon="Paste"
Text="{utils:ResourceString Name=pasteEquationMenuItem/Text}"/>
<MenuFlyoutItem x:Name="UndoMenuItem"
x:Uid="undoEquationMenuItem"
Icon="Undo"/>
<MenuFlyoutItem x:Name="SelectAllMenuItem" x:Uid="selectAllEquationMenuItem"/>
Icon="Undo"
Text="{utils:ResourceString Name=undoEquationMenuItem/Text}"/>
<MenuFlyoutItem x:Name="SelectAllMenuItem" Text="{utils:ResourceString Name=selectAllEquationMenuItem/Text}"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem x:Name="FunctionAnalysisMenuItem">
<MenuFlyoutItem.Icon>
@ -700,7 +702,6 @@
</controls:MathRichEditBox>
<Button x:Name="FunctionButton"
x:Uid="functionAnalysisButton"
Grid.Column="2"
MinWidth="38"
Margin="1,2"
@ -709,11 +710,12 @@
BorderThickness="0"
FontFamily="{StaticResource CalculatorFontFamily}"
AutomationProperties.AccessibilityView="Raw"
AutomationProperties.Name="{utils:ResourceString Name=functionAnalysisButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="&#xE945;"
IsTabStop="False"
ToolTipService.ToolTip="{utils:ResourceString Name=functionAnalysisButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="Collapsed"/>
<ToggleButton x:Name="ColorChooserButton"
x:Uid="colorChooserButton"
Grid.Column="3"
MinWidth="38"
Margin="1,2"
@ -722,8 +724,10 @@
BorderThickness="0"
FontFamily="{StaticResource CalculatorFontFamily}"
AutomationProperties.AccessibilityView="Raw"
AutomationProperties.Name="{utils:ResourceString Name=colorChooserButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="&#xE790;"
IsTabStop="False"
ToolTipService.ToolTip="{utils:ResourceString Name=colorChooserButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="Collapsed">
<ToggleButton.Resources>
<ResourceDictionary>
@ -766,7 +770,6 @@
Visibility="Collapsed"/>
<Grid x:Name="RemoveButtonPanel" Grid.Column="5">
<Button x:Name="RemoveButton"
x:Uid="removeButton"
MinWidth="38"
Margin="1,2"
VerticalAlignment="Stretch"
@ -774,8 +777,10 @@
BorderThickness="0"
FontFamily="{StaticResource CalculatorFontFamily}"
AutomationProperties.AccessibilityView="Raw"
Content="&#xE74D;"
AutomationProperties.Name="{utils:ResourceString Name=removeButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content=""
IsTabStop="False"
ToolTipService.ToolTip="{utils:ResourceString Name=removeButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="Collapsed"/>
</Grid>
<Button x:Name="DeleteButton"
@ -802,10 +807,10 @@
</ResourceDictionary>
</UserControl.Resources>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel x:Uid="EquationInputPanel">
<StackPanel AutomationProperties.Name="{utils:ResourceString Name=EquationInputPanel/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<!-- This ListView and the one below should be replacted by an ItemRepeater once https://github.com/microsoft/microsoft-ui-xaml/issues/2011 is fixed. -->
<ListView x:Name="EquationInputList"
x:Uid="EquationInputList"
AutomationProperties.Name="{utils:ResourceString Name=EquationInputList/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IsItemClickEnabled="False"
ItemsSource="{x:Bind Equations}"
SelectionMode="None"
@ -833,9 +838,9 @@
<ListView.ItemTemplate>
<DataTemplate x:DataType="vm:EquationViewModel">
<controls:EquationTextBox x:Name="EquationInputButton"
x:Uid="EquationInputButton"
Margin="1,0,1,2"
Style="{StaticResource EquationTextBoxStyle}"
AutomationProperties.Name="{utils:ResourceString Name=EquationInputButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
DataContext="{x:Bind Mode=OneWay}"
DataContextChanged="EquationTextBox_DataContextChanged"
EquationButtonClicked="EquationTextBox_EquationButtonClicked"
@ -870,7 +875,7 @@
<Rectangle Height="1"
Margin="12"
Fill="{ThemeResource DividerStrokeColorDefaultBrush}"/>
<ListView x:Uid="VariableListView"
<ListView AutomationProperties.Name="{utils:ResourceString Name=VariableListView/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IsItemClickEnabled="False"
ItemTemplate="{StaticResource VariableDataTemplate}"
ItemsSource="{x:Bind Variables, Mode=OneWay}"

View file

@ -1,16 +1,17 @@
<UserControl x:Class="CalculatorApp.EquationStylePanelControl"
<UserControl x:Class="CalculatorApp.EquationStylePanelControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
mc:Ignorable="d">
<StackPanel>
<TextBlock x:Uid="LineOptionsHeading"
Margin="8,0,0,16"
<TextBlock Margin="8,0,0,16"
FontSize="20"
FontWeight="Medium"
AutomationProperties.HeadingLevel="Level2"/>
AutomationProperties.HeadingLevel="Level2"
Text="{utils:ResourceString Name=LineOptionsHeading/Text}"/>
<GridView x:Name="ColorChooser"
ItemsSource="{x:Bind AvailableColors}"
Loaded="ColorChooserLoaded"
@ -66,7 +67,7 @@
Fill="Transparent"
Stroke="Transparent"
StrokeThickness="2"/>
<ContentPresenter x:Name="ItemContent" />
<ContentPresenter x:Name="ItemContent"/>
</Grid>
</ControlTemplate>
</Setter.Value>
@ -74,9 +75,9 @@
</Style>
</GridView.Resources>
<GridView.Header>
<TextBlock x:Uid="LineColorText"
Margin="8,0,8,8"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Margin="8,0,8,8"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{utils:ResourceString Name=LineColorText/Text}"/>
</GridView.Header>
<GridView.ItemTemplate>
<DataTemplate x:DataType="Brush">
@ -106,9 +107,9 @@
Visibility="Visible"
IsEnabled="{x:Bind EnableLineStylePicker, Mode=OneWay}">
<ComboBox.Header>
<TextBlock x:Uid="StyleChooserBoxHeading"
Margin="0,0,8,8"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Margin="0,0,8,8"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{utils:ResourceString Name=StyleChooserBoxHeading/Text}"/>
</ComboBox.Header>
<ComboBox.ItemTemplate>
<!-- Set x:DataType to be Platform::Object so that we can pass it to the x:Bind function directly since we cannot pass an enum in c++/cx -->

View file

@ -1,6 +1,7 @@
<UserControl x:Class="CalculatorApp.GraphingCalculator"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:common="using:CalculatorApp.Common"
xmlns:contract7NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,7)"
xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
xmlns:contract8Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 8)"
@ -9,6 +10,7 @@
xmlns:graphControl="using:GraphControl"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="Control"
DataContextChanged="GraphingCalculator_DataContextChanged"
mc:Ignorable="d">
@ -553,13 +555,12 @@
<!-- Top panel -->
<Grid Grid.ColumnSpan="2">
<ToggleSwitch x:Name="SwitchModeToggleButton"
x:Uid="SwitchModeToggleButton"
Margin="0,0,12,2"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Style="{StaticResource ConditionalGraphModeToggleSwitchStyle}"
AutomationProperties.AutomationId="SwitchModeToggleButton"
AutomationProperties.Name="{x:Bind local:GraphingCalculator.GetInfoForSwitchModeToggleButton(SwitchModeToggleButton.IsOn), Mode=OneWay}"
AutomationProperties.Name="{utils:ResourceString Name=SwitchModeToggleButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Toggled="SwitchModeToggleButton_Toggled"
ToolTipService.ToolTip="{x:Bind local:GraphingCalculator.GetInfoForSwitchModeToggleButton(SwitchModeToggleButton.IsOn), Mode=OneWay}"
Visibility="Collapsed"/>
@ -595,9 +596,9 @@
VariablesUpdated="GraphingControl_VariablesUpdated">
<graphControl:Grapher.ContextFlyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem x:Uid="GraphCopyMenuItem"
Click="GraphMenuFlyoutItem_Click"
Icon="Copy"/>
<MenuFlyoutItem Click="GraphMenuFlyoutItem_Click"
Icon="Copy"
Text="{utils:ResourceString Name=GraphCopyMenuItem/Text}"/>
</MenuFlyout>
</graphControl:Grapher.ContextFlyout>
</graphControl:Grapher>
@ -639,24 +640,26 @@
Glyph="&#xE3B3;"/>
</ToggleButton>
<Button x:Uid="shareButton"
MinWidth="32"
<Button MinWidth="32"
Margin="0,4,0,4"
Style="{ThemeResource ThemedGraphButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Click="OnShareClick">
AutomationProperties.Name="{utils:ResourceString Name=shareButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="OnShareClick"
ToolTipService.ToolTip="{utils:ResourceString Name=shareButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="16"
Glyph="&#xE72D;"/>
</Button>
<Button x:Name="GraphSettingsButton"
x:Uid="graphSettingsButton"
MinWidth="3"
Margin="4"
Style="{ThemeResource ThemedGraphButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Click="GraphSettingsButton_Click">
AutomationProperties.Name="{utils:ResourceString Name=graphSettingsButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="GraphSettingsButton_Click"
ToolTipService.ToolTip="{utils:ResourceString Name=graphSettingsButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="16"
Glyph="&#xE3B4;"/>
@ -701,7 +704,6 @@
</ResourceDictionary>
</StackPanel.Resources>
<RepeatButton x:Name="ZoomInButton"
x:Uid="zoomInButton"
MinHeight="32"
Margin="4"
HorizontalAlignment="Stretch"
@ -709,7 +711,9 @@
FontFamily="{StaticResource CalculatorFontFamily}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
AutomationProperties.AutomationId="zoomInButton"
Command="{x:Bind ZoomInButtonPressed, Mode=OneTime}">
AutomationProperties.Name="{utils:ResourceString Name=zoomInButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind ZoomInButtonPressed, Mode=OneTime}"
ToolTipService.ToolTip="{utils:ResourceString Name=zoomInButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="14"
Glyph="&#xE948;"/>
@ -719,7 +723,6 @@
</RepeatButton>
<RepeatButton x:Name="ZoomOutButton"
x:Uid="zoomOutButton"
MinHeight="32"
Margin="4,0,4,0"
HorizontalAlignment="Stretch"
@ -727,7 +730,9 @@
FontFamily="{StaticResource CalculatorFontFamily}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
AutomationProperties.AutomationId="zoomOutButton"
Command="{x:Bind ZoomOutButtonPressed, Mode=OneTime}">
AutomationProperties.Name="{utils:ResourceString Name=zoomOutButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind ZoomOutButtonPressed, Mode=OneTime}"
ToolTipService.ToolTip="{utils:ResourceString Name=zoomOutButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"
FontSize="14"
Glyph="&#xE949;"/>
@ -736,14 +741,16 @@
</RepeatButton.KeyboardAccelerators>
</RepeatButton>
<ToggleButton x:Uid="graphViewButton"
MinHeight="32"
<ToggleButton MinHeight="32"
Margin="4"
Style="{ThemeResource ThemedGraphViewToggleButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=graphViewButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
AutomationProperties.AutomationId="graphViewButton"
AutomationProperties.Name="{utils:ResourceString Name=graphViewButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="GraphViewButton_Click"
IsChecked="{x:Bind IsManualAdjustment, Mode=TwoWay}">
IsChecked="{x:Bind IsManualAdjustment, Mode=TwoWay}"
ToolTipService.ToolTip="{utils:ResourceString Name=graphViewButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<ToggleButton.Content>
<Grid>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"

File diff suppressed because it is too large Load diff

View file

@ -6,6 +6,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
<UserControl.Resources>
@ -110,26 +111,26 @@
<Grid>
<StackPanel Margin="4,0,4,4">
<TextBlock x:Name="GraphOptionsHeading"
x:Uid="GraphOptionsHeading"
FontSize="20"
FontWeight="Medium"
AutomationProperties.HeadingLevel="Level1"/>
AutomationProperties.HeadingLevel="Level1"
Text="{utils:ResourceString Name=GraphOptionsHeading/Text}"/>
<Grid Margin="0,16,0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="GridHeading"
x:Uid="GridHeading"
Style="{StaticResource SubTitleTextBoxStyle}"
AutomationProperties.HeadingLevel="Level2"/>
<HyperlinkButton x:Uid="ResetViewButton"
Grid.Column="1"
AutomationProperties.HeadingLevel="Level2"
Text="{utils:ResourceString Name=GridHeading/Text}"/>
<HyperlinkButton Grid.Column="1"
Padding="0"
FontSize="12"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
BorderThickness="0"
Click="ResetViewButton_Clicked">
FontSize="12"
Click="ResetViewButton_Clicked"
Content="{utils:ResourceString Name=ResetViewButton/Content}">
<HyperlinkButton.Resources>
<ResourceDictionary>
<StaticResource x:Key="HyperlinkButtonBackgroundPointerOver" ResourceKey="SubtleFillColorTransparentBrush"/>
@ -151,73 +152,73 @@
</Grid.ColumnDefinitions>
<TextBox x:Name="SettingsXMin"
x:Uid="GraphSettingsXMin"
MaxWidth="160"
Style="{x:Bind SelectTextBoxStyle(ViewModel.XError, ViewModel.XMinError), Mode=OneWay}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Header="{utils:ResourceString Name=GraphSettingsXMin/Header}"
HeaderTemplate="{StaticResource XYTextBoxHeaderTemplate}"
PreviewKeyDown="GridSettingsTextBox_PreviewKeyDown"
Text="{x:Bind ViewModel.XMin, Mode=TwoWay}"/>
<TextBox x:Name="SettingsXMax"
x:Uid="GraphSettingsXMax"
Grid.Column="2"
MaxWidth="160"
Style="{x:Bind SelectTextBoxStyle(ViewModel.XError, ViewModel.XMaxError), Mode=OneWay}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Header="{utils:ResourceString Name=GraphSettingsXMax/Header}"
HeaderTemplate="{StaticResource XYTextBoxHeaderTemplate}"
PreviewKeyDown="GridSettingsTextBox_PreviewKeyDown"
Text="{x:Bind ViewModel.XMax, Mode=TwoWay}"/>
<TextBox x:Name="SettingsYMin"
x:Uid="GraphSettingsYMin"
Grid.Row="2"
MaxWidth="160"
Style="{x:Bind SelectTextBoxStyle(ViewModel.YError, ViewModel.YMinError), Mode=OneWay}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Header="{utils:ResourceString Name=GraphSettingsYMin/Header}"
HeaderTemplate="{StaticResource XYTextBoxHeaderTemplate}"
PreviewKeyDown="GridSettingsTextBox_PreviewKeyDown"
Text="{x:Bind ViewModel.YMin, Mode=TwoWay}"/>
<TextBox x:Name="SettingsYMax"
x:Uid="GraphSettingsYMax"
Grid.Row="2"
Grid.Column="2"
MaxWidth="160"
Style="{x:Bind SelectTextBoxStyle(ViewModel.YError, ViewModel.YMaxError), Mode=OneWay}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Header="{utils:ResourceString Name=GraphSettingsYMax/Header}"
HeaderTemplate="{StaticResource XYTextBoxHeaderTemplate}"
PreviewKeyDown="GridSettingsTextBox_PreviewKeyDown"
Text="{x:Bind ViewModel.YMax, Mode=TwoWay}"/>
</Grid>
<TextBlock x:Name="UnitsHeading"
x:Uid="UnitsHeading"
Margin="0,16,0,6"
Style="{StaticResource SubTitleTextBoxStyle}"
AutomationProperties.HeadingLevel="Level2"/>
AutomationProperties.HeadingLevel="Level2"
Text="{utils:ResourceString Name=UnitsHeading/Text}"/>
<StackPanel AutomationProperties.LabeledBy="{Binding ElementName=UnitsHeading}" Orientation="Horizontal">
<RadioButton x:Name="Radians"
x:Uid="TrigModeRadians"
Style="{StaticResource TrigUnitsRadioButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Content="{utils:ResourceString Name=TrigModeRadians/Content}"
IsChecked="{x:Bind ViewModel.TrigModeRadians, Mode=TwoWay}"/>
<RadioButton x:Name="Degrees"
x:Uid="TrigModeDegrees"
Margin="4,0"
Style="{StaticResource TrigUnitsRadioButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Content="{utils:ResourceString Name=TrigModeDegrees/Content}"
IsChecked="{x:Bind ViewModel.TrigModeDegrees, Mode=TwoWay}"/>
<RadioButton x:Name="Gradians"
x:Uid="TrigModeGradians"
Style="{StaticResource TrigUnitsRadioButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Content="{utils:ResourceString Name=TrigModeGradians/Content}"
IsChecked="{x:Bind ViewModel.TrigModeGradians, Mode=TwoWay}"/>
</StackPanel>
<TextBlock x:Name="LineThicknessBoxHeading"
x:Uid="LineThicknessBoxHeading"
Margin="0,16,0,6"
Style="{StaticResource SubTitleTextBoxStyle}"
AutomationProperties.HeadingLevel="Level2"/>
AutomationProperties.HeadingLevel="Level2"
Text="{utils:ResourceString Name=LineThicknessBoxHeading/Text}"/>
<ComboBox MinWidth="200"
HorizontalAlignment="Stretch"
AutomationProperties.LabeledBy="{Binding ElementName=LineThicknessBoxHeading}"
@ -246,15 +247,19 @@
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock x:Name="GraphThemeHeading"
x:Uid="GraphThemeHeading"
Margin="0,16,0,6"
Style="{StaticResource SubTitleTextBoxStyle}"
AutomationProperties.HeadingLevel="Level2"/>
AutomationProperties.HeadingLevel="Level2"
AutomationProperties.Name="{utils:ResourceString Name=GraphThemeHeading/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Text="{utils:ResourceString Name=GraphThemeHeading/Text}"/>
<StackPanel AutomationProperties.LabeledBy="{Binding ElementName=GraphThemeHeading}">
<RadioButton x:Uid="AlwaysLightTheme" IsChecked="{x:Bind IsMatchAppTheme, Mode=TwoWay, Converter={StaticResource BooleanNegationConverter}}"/>
<RadioButton x:Uid="MatchAppTheme"
Margin="1,0"
<RadioButton AutomationProperties.Name="{utils:ResourceString Name=AlwaysLightTheme/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="{utils:ResourceString Name=AlwaysLightTheme/Content}"
IsChecked="{x:Bind IsMatchAppTheme, Mode=TwoWay, Converter={StaticResource BooleanNegationConverter}}"/>
<RadioButton Margin="1,0"
AutomationProperties.Name="{utils:ResourceString Name=MatchAppTheme/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Content="{utils:ResourceString Name=MatchAppTheme/Content}"
IsChecked="{x:Bind IsMatchAppTheme, Mode=TwoWay}"/>
</StackPanel>
</StackPanel>

View file

@ -8,6 +8,7 @@
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ts="using:CalculatorApp.TemplateSelectors"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vm="using:CalculatorApp.ViewModel"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
@ -221,7 +222,7 @@
</ResourceDictionary>
</UserControl.Resources>
<Grid x:Uid="FunctionAnalysisGrid">
<Grid AutomationProperties.Name="{utils:ResourceString Name=FunctionAnalysisGrid/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
@ -235,12 +236,13 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button x:Name="BackButton"
x:Uid="equationAnalysisBack"
MinWidth="44"
VerticalAlignment="Stretch"
Style="{ThemeResource ThemedBackButtonStyle}"
contract7Present:CornerRadius="{ThemeResource ControlCornerRadius}"
Click="BackButton_Click">
AutomationProperties.Name="{utils:ResourceString Name=equationAnalysisBack/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="BackButton_Click"
ToolTipService.ToolTip="{utils:ResourceString Name=equationAnalysisBack/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}">
<StackPanel Margin="5,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
@ -258,22 +260,22 @@
</StackPanel>
</StackPanel>
</Button>
<controls:MathRichEditBox x:Uid="KGFEquationTextBox"
Grid.Column="1"
<controls:MathRichEditBox Grid.Column="1"
Padding="10,0,6,0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
Style="{StaticResource KGF_RichEditBoxStyle}"
Foreground="{ThemeResource TitleMathRichEditBoxForegroundBrush}"
AutomationProperties.Name="{utils:ResourceString Name=KGFEquationTextBox/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
MathText="{x:Bind ViewModel.Expression, Mode=OneWay}"/>
</Grid>
<TextBlock x:Uid="KeyGraphFeaturesLabel"
Grid.Row="1"
<TextBlock Grid.Row="1"
Margin="12,12,10,0"
Style="{StaticResource KGF_TitleTextBlockStyle}"
FontSize="20"
FontWeight="Medium"
AutomationProperties.HeadingLevel="Level1"/>
AutomationProperties.HeadingLevel="Level1"
Text="{utils:ResourceString Name=KeyGraphFeaturesLabel/Text}"/>
<ListView x:Name="KeyGraphFeaturesListView"
Grid.Row="2"

View file

@ -2,12 +2,14 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
xmlns:common="using:CalculatorApp.Common"
xmlns:converters="using:CalculatorApp.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:CalculatorApp.ViewModel"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:utils="using:CalculatorApp.Utils"
AutomationProperties.AutomationId="HistoryList"
FlowDirection="LeftToRight"
mc:Ignorable="d">
@ -42,18 +44,20 @@
<muxc:SymbolIconSource x:Key="DeleteSymbol" Symbol="Delete"/>
<muxc:SwipeItems x:Key="HistorySwipeItems" Mode="Execute">
<muxc:SwipeItem x:Uid="DeleteHistorySwipeItem"
<muxc:SwipeItem AutomationProperties.Name="{utils:ResourceString Name=DeleteHistorySwipeItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IconSource="{StaticResource DeleteSymbol}"
Invoked="OnDeleteSwipeInvoked"/>
Invoked="OnDeleteSwipeInvoked"
Text="{utils:ResourceString Name=DeleteHistorySwipeItem/Text}"/>
</muxc:SwipeItems>
<MenuFlyout x:Name="HistoryContextMenu">
<MenuFlyoutItem x:Uid="CopyHistoryMenuItem"
Click="OnCopyMenuItemClicked"
Icon="Copy"/>
<MenuFlyoutItem x:Uid="DeleteHistoryMenuItem"
<MenuFlyoutItem Click="OnCopyMenuItemClicked"
Icon="Copy"
Text="{utils:ResourceString Name=CopyHistoryMenuItem/Text}"/>
<MenuFlyoutItem AutomationProperties.Name="{utils:ResourceString Name=DeleteHistoryMenuItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="OnDeleteMenuItemClicked"
Icon="Delete"/>
Icon="Delete"
Text="{utils:ResourceString Name=DeleteHistoryMenuItem/Text}"/>
</MenuFlyout>
<DataTemplate x:Key="HistoryItemTemplate" x:DataType="model:HistoryItemViewModel">
@ -133,10 +137,10 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock x:Name="HistoryEmpty"
x:Uid="HistoryEmpty"
Margin="12,8,24,0"
Style="{ThemeResource BodyTextBlockStyle}"
Foreground="{ThemeResource TextFillColorPrimaryBrush}"
Text="{utils:ResourceString Name=HistoryEmpty/Text}"
TextWrapping="Wrap"
Visibility="{x:Bind Model.ItemsCount, Converter={StaticResource ItemSizeToVisibilityConverter}, Mode=OneWay}"/>
<ListView x:Name="HistoryListView"
@ -162,12 +166,15 @@
</ListView.ItemContainerTransitions>
</ListView>
<Button x:Name="ClearHistory"
x:Uid="ClearHistory"
Grid.Row="1"
Style="{StaticResource ClearAllHistoryMemoryButtonStyle}"
common:KeyboardShortcutManager.VirtualKeyControlShiftChord="{utils:ResourceVirtualKey Name=ClearHistory/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlShiftChord}"
AccessKey="{utils:ResourceString Name=ClearHistory/AccessKey}"
AutomationProperties.AutomationId="ClearHistory"
AutomationProperties.Name="{utils:ResourceString Name=ClearHistory/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.ClearCommand, Mode=OneWay}"
Content="&#xE74D;"
Content=""
ToolTipService.ToolTip="{utils:ResourceString Name=ClearHistory/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{x:Bind Model.ItemsCount, Mode=OneWay, Converter={StaticResource ItemSizeToVisibilityNegationConverter}}"/>
</Grid>
</Grid>

View file

@ -2,12 +2,14 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
xmlns:common="using:CalculatorApp.Common"
xmlns:converters="using:CalculatorApp.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:selectors="using:CalculatorApp.TemplateSelectors"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vmcom="using:CalculatorApp.ViewModel.Common"
x:Name="PageRoot"
muxc:BackdropMaterial.ApplyToRootOrPageBackground="True"
@ -28,26 +30,26 @@
<Setter Property="KeyTipPlacementMode" Value="Right"/>
</Style>
<DataTemplate x:Key="NavViewCategoryItemDataTemplate" x:DataType="vmcom:NavCategory">
<muxc:NavigationViewItem Content="{x:Bind Name}"
Tag="{x:Bind ViewMode}"
<muxc:NavigationViewItem Style="{StaticResource NavViewItemStyle}"
AccessKey="{x:Bind AccessKey}"
IsEnabled="{x:Bind IsEnabled, Mode=OneWay}"
Style="{StaticResource NavViewItemStyle}"
AutomationProperties.AutomationId="{x:Bind AutomationId}"
AutomationProperties.Name="{x:Bind AutomationName}"
AutomationProperties.AutomationId="{x:Bind AutomationId}">
Content="{x:Bind Name}"
Tag="{x:Bind ViewMode}"
IsEnabled="{x:Bind IsEnabled, Mode=OneWay}">
<muxc:NavigationViewItem.Icon>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="{x:Bind Glyph}"/>
</muxc:NavigationViewItem.Icon>
</muxc:NavigationViewItem>
</DataTemplate>
<DataTemplate x:Key="NavViewCategoryGroupItemDataTemplate" x:DataType="vmcom:NavCategoryGroup">
<muxc:NavigationViewItemHeader Content="{x:Bind Name}"
<muxc:NavigationViewItemHeader AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{x:Bind AutomationName}"
AutomationProperties.HeadingLevel="Level1"/>
Content="{x:Bind Name}"/>
</DataTemplate>
<selectors:NavViewMenuItemTemplateSelector x:Key="NavViewMenuItemTemplateSelector"
CategoryItemTemplate="{StaticResource NavViewCategoryItemDataTemplate}"
CategoryGroupItemTemplate="{StaticResource NavViewCategoryGroupItemDataTemplate}"/>
CategoryGroupItemTemplate="{StaticResource NavViewCategoryGroupItemDataTemplate}"
CategoryItemTemplate="{StaticResource NavViewCategoryItemDataTemplate}"/>
<converters:BooleanToVisibilityNegationConverter x:Key="BooleanToVisibilityNegationConverter"/>
<converters:BooleanNegationConverter x:Key="BooleanNegationConverter"/>
@ -89,16 +91,16 @@
they are not to be shown, only to have the command and shortcut assigned to them.
-->
<Button x:Name="CopyButton"
x:Uid="copyButton"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=copyButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
Command="{x:Bind Model.CopyCommand}"/>
<Button x:Name="PasteButton"
x:Uid="pasteButton"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=pasteButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
Command="{x:Bind Model.PasteCommand}"/>
<Button x:Name="CopyButtonAlternate"
x:Uid="copyButtonAlternate"
common:KeyboardShortcutManager.VirtualKeyControlChord="{utils:ResourceVirtualKey Name=copyButtonAlternate/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyControlChord}"
Command="{x:Bind Model.CopyCommand}"/>
<Button x:Name="PasteButtonAlternate"
x:Uid="pasteButtonAlternate"
common:KeyboardShortcutManager.VirtualKeyShiftChord="{utils:ResourceVirtualKey Name=pasteButtonAlternate/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKeyShiftChord}"
Command="{x:Bind Model.PasteCommand}"/>
</StackPanel>
@ -109,8 +111,8 @@
IsAlwaysOnTopMode="{x:Bind Model.IsAlwaysOnTop, Mode=OneWay}"/>
<muxc:NavigationView x:Name="NavView"
x:Uid="NavView"
Grid.Row="1"
AccessKey="{utils:ResourceString Name=NavView/AccessKey}"
CompactModeThresholdWidth="Infinity"
DataContext="{x:Bind Model}"
ExpandedModeThresholdWidth="Infinity"
@ -119,11 +121,11 @@
IsSettingsVisible="True"
ItemInvoked="OnNavItemInvoked"
Loaded="OnNavLoaded"
MenuItemsSource="{x:Bind NavViewCategoriesSource, Mode=OneWay}"
MenuItemTemplateSelector="{StaticResource NavViewMenuItemTemplateSelector}"
MenuItemsSource="{x:Bind NavViewCategoriesSource, Mode=OneWay}"
OpenPaneLength="{x:Bind NavigationViewOpenPaneLength(Model.IsAlwaysOnTop), Mode=OneWay}"
PaneDisplayMode="LeftMinimal"
PaneClosed="OnNavPaneClosed"
PaneDisplayMode="LeftMinimal"
PaneOpened="OnNavPaneOpened"
SelectionChanged="OnNavSelectionChanged"
TabIndex="1"
@ -161,13 +163,14 @@
Visibility="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanToVisibilityNegationConverter}, Mode=OneWay}"/>
<Button x:Name="NormalAlwaysOnTopButton"
x:Uid="EnterAlwaysOnTopButton"
Grid.Column="2"
Style="{StaticResource SquareIconButtonStyle}"
AutomationProperties.AutomationId="NormalAlwaysOnTopButton"
AutomationProperties.Name="{utils:ResourceString Name=EnterAlwaysOnTopButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="AlwaysOnTopButtonClick"
Content="&#xEE49;"
TabIndex="3"
ToolTipService.ToolTip="{utils:ResourceString Name=EnterAlwaysOnTopButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="Up" Modifiers="Menu"/>

View file

@ -8,6 +8,7 @@
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:CalculatorApp.ViewModel"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="MemoryList"
FlowDirection="LeftToRight"
mc:Ignorable="d">
@ -18,17 +19,17 @@
<converters:BooleanNegationConverter x:Key="BooleanNegationConverter"/>
<MenuFlyout x:Name="MemoryContextMenu">
<MenuFlyoutItem x:Uid="ClearMemoryMenuItem" Click="OnClearMenuItemClicked">
<MenuFlyoutItem Click="OnClearMenuItemClicked" Text="{utils:ResourceString Name=ClearMemoryMenuItem/Text}">
<MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="&#xf754;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem x:Uid="MemPlusMenuItem" Click="OnMemoryAddMenuItemClicked">
<MenuFlyoutItem Click="OnMemoryAddMenuItemClicked" Text="{utils:ResourceString Name=MemPlusMenuItem/Text}">
<MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="&#xf757;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem x:Uid="MemMinusMenuItem" Click="OnMemorySubtractMenuItemClicked">
<MenuFlyoutItem Click="OnMemorySubtractMenuItemClicked" Text="{utils:ResourceString Name=MemMinusMenuItem/Text}">
<MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="&#xf758;"/>
</MenuFlyoutItem.Icon>
@ -96,10 +97,10 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock x:Name="MemoryPaneEmpty"
x:Uid="MemoryPaneEmpty"
Margin="12,8,24,0"
Style="{ThemeResource BodyTextBlockStyle}"
Foreground="{ThemeResource TextFillColorPrimaryBrush}"
Text="{utils:ResourceString Name=MemoryPaneEmpty/Text}"
TextWrapping="Wrap"
Visibility="{Binding IsMemoryEmpty, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<ListView x:Name="MemoryListView"
@ -123,12 +124,14 @@
</ListView.ItemContainerTransitions>
</ListView>
<Button x:Name="ClearMemory"
x:Uid="ClearMemory"
Grid.Row="1"
Style="{ThemeResource ClearAllHistoryMemoryButtonStyle}"
AccessKey="{utils:ResourceString Name=ClearMemory/AccessKey}"
AutomationProperties.AutomationId="ClearMemory"
AutomationProperties.Name="{utils:ResourceString Name=ClearMemory/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Command="{x:Bind Model.ClearMemoryCommand, Mode=OneWay}"
Content="&#xE74D;"
ToolTipService.ToolTip="{utils:ResourceString Name=ClearMemory/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="{x:Bind Model.IsMemoryEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
</Grid>

View file

@ -4,6 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:utils="using:CalculatorApp.Utils"
FlowDirection="LeftToRight"
mc:Ignorable="d">
<UserControl.Resources>
@ -18,16 +19,16 @@
Glyph="&#xf758;"/>
<muxc:SwipeItems x:Key="MemorySwipeItems" Mode="Reveal">
<muxc:SwipeItem x:Uid="ClearMemorySwipeItem"
Background="{ThemeResource SystemControlBackgroundAccentBrush}"
<muxc:SwipeItem Background="{ThemeResource SystemControlBackgroundAccentBrush}"
AutomationProperties.Name="{utils:ResourceString Name=ClearMemorySwipeItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IconSource="{StaticResource MemClearGlyph}"
Invoked="OnClearSwipeInvoked"/>
<muxc:SwipeItem x:Uid="MemPlusSwipeItem"
Background="{ThemeResource SystemControlBackgroundAccentBrush}"
<muxc:SwipeItem Background="{ThemeResource SystemControlBackgroundAccentBrush}"
AutomationProperties.Name="{utils:ResourceString Name=MemPlusSwipeItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IconSource="{StaticResource MemPlusGlyph}"
Invoked="OnMemoryAddSwipeInvoked"/>
<muxc:SwipeItem x:Uid="MemMinusSwipeItem"
Background="{ThemeResource SystemControlBackgroundAccentBrush}"
<muxc:SwipeItem Background="{ThemeResource SystemControlBackgroundAccentBrush}"
AutomationProperties.Name="{utils:ResourceString Name=MemMinusSwipeItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
IconSource="{StaticResource MemMinusGlyph}"
Invoked="OnMemorySubtractSwipeInvoked"/>
</muxc:SwipeItems>
@ -70,24 +71,27 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Uid="ClearMemoryItemButton"
Style="{StaticResource MemoryHoverButtonStyle}"
<Button Style="{StaticResource MemoryHoverButtonStyle}"
AutomationProperties.AutomationId="MClearButton"
AutomationProperties.Name="{utils:ResourceString Name=ClearMemoryItemButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="OnClearButtonClicked"
Content="MC"/>
<Button x:Uid="MemPlusItem"
Grid.Column="1"
Content="MC"
ToolTipService.ToolTip="{utils:ResourceString Name=ClearMemoryItemButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
<Button Grid.Column="1"
Margin="1,0"
Style="{StaticResource MemoryHoverButtonStyle}"
AutomationProperties.AutomationId="MAddButton"
AutomationProperties.Name="{utils:ResourceString Name=MemPlusItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="OnMemoryAddButtonClicked"
Content="M+"/>
<Button x:Uid="MemMinusItem"
Grid.Column="2"
Content="M+"
ToolTipService.ToolTip="{utils:ResourceString Name=MemPlusItem/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
<Button Grid.Column="2"
Style="{StaticResource MemoryHoverButtonStyle}"
AutomationProperties.AutomationId="MSubButton"
AutomationProperties.Name="{utils:ResourceString Name=MemMinusItem/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="OnMemorySubtractButtonClicked"
Content="M-"/>
Content="M-"
ToolTipService.ToolTip="{utils:ResourceString Name=MemMinusItem/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"/>
</Grid>
</Grid>
</muxc:SwipeControl>

View file

@ -1,4 +1,4 @@
<UserControl x:Class="CalculatorApp.NumberPad"
<UserControl x:Class="CalculatorApp.NumberPad"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:common="using:CalculatorApp.Common"
@ -7,6 +7,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
x:Name="ControlRoot"
d:DesignHeight="315"
d:DesignWidth="235"
@ -36,84 +37,86 @@
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<controls:CalculatorButton x:Name="Num0Button"
x:Uid="num0Button"
Grid.Row="3"
Grid.Column="1"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num0Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num0Button"
AutomationProperties.Name="{utils:ResourceString Name=num0Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Zero"/>
<controls:CalculatorButton x:Name="Num1Button"
x:Uid="num1Button"
Grid.Row="2"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num1Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num1Button"
AutomationProperties.Name="{utils:ResourceString Name=num1Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="One"/>
<controls:CalculatorButton x:Name="Num2Button"
x:Uid="num2Button"
Grid.Row="2"
Grid.Column="1"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num2Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num2Button"
AutomationProperties.Name="{utils:ResourceString Name=num2Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Two"/>
<controls:CalculatorButton x:Name="Num3Button"
x:Uid="num3Button"
Grid.Row="2"
Grid.Column="2"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num3Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num3Button"
AutomationProperties.Name="{utils:ResourceString Name=num3Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Three"/>
<controls:CalculatorButton x:Name="Num4Button"
x:Uid="num4Button"
Grid.Row="1"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num4Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num4Button"
AutomationProperties.Name="{utils:ResourceString Name=num4Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Four"/>
<controls:CalculatorButton x:Name="Num5Button"
x:Uid="num5Button"
Grid.Row="1"
Grid.Column="1"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num5Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num5Button"
AutomationProperties.Name="{utils:ResourceString Name=num5Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Five"/>
<controls:CalculatorButton x:Name="Num6Button"
x:Uid="num6Button"
Grid.Row="1"
Grid.Column="2"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num6Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num6Button"
AutomationProperties.Name="{utils:ResourceString Name=num6Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Six"/>
<controls:CalculatorButton x:Name="Num7Button"
x:Uid="num7Button"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num7Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num7Button"
AutomationProperties.Name="{utils:ResourceString Name=num7Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Seven"/>
<controls:CalculatorButton x:Name="Num8Button"
x:Uid="num8Button"
Grid.Column="1"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num8Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num8Button"
AutomationProperties.Name="{utils:ResourceString Name=num8Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Eight"/>
<controls:CalculatorButton x:Name="Num9Button"
x:Uid="num9Button"
Grid.Column="2"
Style="{x:Bind Path=ButtonStyle, Mode=OneWay}"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=num9Button/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
AutomationProperties.AutomationId="num9Button"
AutomationProperties.Name="{utils:ResourceString Name=num9Button/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Nine"/>
<!--
This is the only button in all of the app that should ever have a explicit reference to KeyboardShortcutManager in Xaml
this is needed because we need to have at least 1 reference from Xaml so the right metadata is generated for the
KeyboardShortcutManager class, otherwise the Xaml will stop parsing and the app won't boot therefore:
DO NOT REMOVE the common:KeyboardShortcutManager.Character from this element, it's value will be overwritten by the
string coming from the RESW file
-->
<controls:CalculatorButton x:Name="DecimalSeparatorButton"
x:Uid="decimalSeparatorButton"
Grid.Row="3"
Grid.Column="2"
Style="{Binding ElementName=ControlRoot, Path=ButtonStyle}"
common:KeyboardShortcutManager.Character="."
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=decimalSeparatorButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.AutomationId="decimalSeparatorButton"
AutomationProperties.Name="{utils:ResourceString Name=decimalSeparatorButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Decimal"
IsEnabled="{Binding IsDecimalEnabled}"/>
</Grid>

View file

@ -6,6 +6,7 @@
xmlns:labs="using:CommunityToolkit.Labs.WinUI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:utils="using:CalculatorApp.Utils"
Loaded="OnLoaded"
Unloaded="OnUnloaded"
mc:Ignorable="d">
@ -54,7 +55,6 @@
</Grid.RowDefinitions>
<Button x:Name="BackButton"
x:Uid="TitleBarBackButton"
Grid.Row="0"
Width="44"
Height="{x:Bind TitleBarHeight.Value, Mode=OneWay}"
@ -62,6 +62,7 @@
Padding="2,0,0,0"
Style="{StaticResource SquareIconButtonStyle}"
FontSize="12"
AutomationProperties.Name="{utils:ResourceString Name=TitleBarBackButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="BackButton_Click"
Content="&#xE72B;"/>
@ -71,8 +72,8 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Top">
<TextBlock x:Name="Header"
x:Uid="SettingsHeader"
Style="{StaticResource CategoryNameTextBlockStyle}"/>
Style="{StaticResource CategoryNameTextBlockStyle}"
Text="{utils:ResourceString Name=SettingsHeader/Text}"/>
</Grid>
<ScrollViewer Grid.Row="1"
@ -85,9 +86,9 @@
<EntranceThemeTransition FromVerticalOffset="50" IsStaggeringEnabled="True"/>
<RepositionThemeTransition IsStaggeringEnabled="False"/>
</StackPanel.ChildrenTransitions>
<TextBlock x:Uid="SettingsAppearance"
Style="{StaticResource SettingsCategoryTitleTextBlockStyle}"
AutomationProperties.HeadingLevel="Level1"/>
<TextBlock Style="{StaticResource SettingsCategoryTitleTextBlockStyle}"
AutomationProperties.HeadingLevel="Level1"
Text="{utils:ResourceString Name=SettingsAppearance/Text}"/>
<labs:SettingsExpander x:Name="AppThemeExpander"
Description="Select which app theme to display"
Header="App theme">
@ -100,13 +101,13 @@
Margin="0,-8,0,0"
SelectionChanged="OnThemeSelectionChanged">
<RadioButton x:Name="LightThemeRadioButton"
x:Uid="LightThemeRadioButton"
Content="{utils:ResourceString Name=LightThemeRadioButton/Content}"
Tag="Light"/>
<RadioButton x:Name="DarkThemeRadioButton"
x:Uid="DarkThemeRadioButton"
Content="{utils:ResourceString Name=DarkThemeRadioButton/Content}"
Tag="Dark"/>
<RadioButton x:Name="SystemThemeRadioButton"
x:Uid="SystemThemeRadioButton"
Content="{utils:ResourceString Name=SystemThemeRadioButton/Content}"
Tag="Default"/>
</muxc:RadioButtons>
</labs:SettingsCard>
@ -114,9 +115,9 @@
</labs:SettingsExpander>
<TextBlock x:Name="AboutGroupTitle"
x:Uid="AboutGroupTitle"
Style="{ThemeResource SettingsCategoryTitleTextBlockStyle}"
AutomationProperties.HeadingLevel="Level1"/>
AutomationProperties.HeadingLevel="Level1"
Text="{utils:ResourceString Name=AboutGroupTitle/Text}"/>
<labs:SettingsExpander x:Name="AboutExpander">
<labs:SettingsExpander.HeaderIcon>
<BitmapIcon AutomationProperties.AccessibilityView="Raw" UriSource="ms-appx:///Assets/CalculatorAppList.png"/>
@ -134,8 +135,8 @@
Padding="0"
NavigateUri="https://go.microsoft.com/fwlink/?LinkID=529064"
ToolTipService.ToolTip="https://go.microsoft.com/fwlink/?LinkID=529064">
<TextBlock x:Uid="AboutEULA"
FontSize="{ThemeResource BodyFontSize}"
<TextBlock FontSize="{ThemeResource BodyFontSize}"
Text="{utils:ResourceString Name=AboutEULA/Text}"
TextWrapping="Wrap"/>
</HyperlinkButton>
@ -143,8 +144,8 @@
Padding="0"
NavigateUri="https://go.microsoft.com/fwlink/?LinkID=822631"
ToolTipService.ToolTip="https://go.microsoft.com/fwlink/?LinkID=822631">
<TextBlock x:Uid="AboutControlServicesAgreement"
FontSize="{ThemeResource BodyFontSize}"
<TextBlock FontSize="{ThemeResource BodyFontSize}"
Text="{utils:ResourceString Name=AboutControlServicesAgreement/Text}"
TextWrapping="Wrap"/>
</HyperlinkButton>
@ -152,8 +153,8 @@
Padding="0"
NavigateUri="https://go.microsoft.com/fwlink/?LinkID=521839"
ToolTipService.ToolTip="https://go.microsoft.com/fwlink/?LinkID=521839">
<TextBlock x:Uid="AboutControlPrivacyStatement"
FontSize="{ThemeResource BodyFontSize}"
<TextBlock FontSize="{ThemeResource BodyFontSize}"
Text="{utils:ResourceString Name=AboutControlPrivacyStatement/Text}"
TextWrapping="Wrap"/>
</HyperlinkButton>
</StackPanel>
@ -162,13 +163,13 @@
</labs:SettingsExpander>
<HyperlinkButton x:Name="FeedbackButton"
x:Uid="FeedbackButton"
MinWidth="120"
Margin="-12,4,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
FontSize="{StaticResource BodyFontSize}"
Click="FeedbackButton_Click"/>
Click="FeedbackButton_Click"
Content="{utils:ResourceString Name=FeedbackButton/Content}"/>
<RichTextBlock x:Name="AboutContribute"
Grid.Row="2"

View file

@ -7,6 +7,7 @@
xmlns:designdata="using:CalculatorApp.DesignData"
xmlns:local="using:CalculatorApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vm="using:CalculatorApp.ViewModel"
d:DesignHeight="300"
d:DesignWidth="400"
@ -89,13 +90,12 @@
</UserControl.Resources>
<StackPanel>
<TextBlock x:Uid="SupplementaryResultsHeader"
Margin="16,0,0,-6"
<TextBlock Margin="16,0,0,-6"
HorizontalAlignment="Left"
Style="{ThemeResource CaptionTextBlockStyle}"
Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"
IsTextScaleFactorEnabled="False"
Text="Also equal to"/>
Text="{utils:ResourceString Name=SupplementaryResultsHeader/Text}"/>
<controls:SupplementaryItemsControl x:Name="SupplementaryValues"
MinHeight="27"
HorizontalAlignment="Left"

View file

@ -3,6 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:utils="using:CalculatorApp.Utils"
Height="32"
mc:Ignorable="d">
<Grid x:Name="LayoutRoot"
@ -73,7 +74,6 @@
</Grid>
</Grid>
<Button x:Name="ExitAlwaysOnTopButton"
x:Uid="ExitAlwaysOnTopButton"
Width="46"
Height="Auto"
HorizontalAlignment="Left"
@ -84,8 +84,10 @@
FontSize="14"
FontWeight="Thin"
AutomationProperties.AutomationId="ExitAlwaysOnTopButton"
AutomationProperties.Name="{utils:ResourceString Name=ExitAlwaysOnTopButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
Click="AlwaysOnTopButton_Click"
Content="&#xEE47;"
ToolTipService.ToolTip="{utils:ResourceString Name=ExitAlwaysOnTopButton/[using:Windows.UI.Xaml.Controls]ToolTipService/ToolTip}"
Visibility="Collapsed"
x:Load="False">
<Button.KeyboardAccelerators>

View file

@ -12,6 +12,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
xmlns:utils="using:CalculatorApp.Utils"
xmlns:vm="using:CalculatorApp.ViewModel"
d:DesignHeight="658"
d:DesignWidth="830"
@ -663,12 +664,12 @@
Visibility="Collapsed">
<StackPanel Orientation="Horizontal">
<HyperlinkButton x:Name="CurrencyRefreshBlock"
x:Uid="RefreshButtonText"
Margin="16,4,0,0"
Padding="0"
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
BorderThickness="0"
Click="CurrencyRefreshButton_Click">
Click="CurrencyRefreshButton_Click"
Content="{utils:ResourceString Name=RefreshButtonText/Content}">
<HyperlinkButton.Resources>
<ResourceDictionary>
<StaticResource x:Key="HyperlinkButtonBackgroundPointerOver" ResourceKey="SubtleFillColorTransparentBrush"/>
@ -677,8 +678,7 @@
</HyperlinkButton.Resources>
</HyperlinkButton>
<TextBlock Margin="3,6,0,0" Style="{ThemeResource CaptionTextBlockStyle}">
<Run x:Name="CurrencySecondaryStatus"
Text=""/>
<Run x:Name="CurrencySecondaryStatus" Text=""/>
</TextBlock>
</StackPanel>
</ContentControl>
@ -724,50 +724,54 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid x:Uid="DisplayControls"
Grid.Row="0"
<Grid Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
AutomationProperties.HeadingLevel="Level1">
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=DisplayControls/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<controls:CalculatorButton x:Name="ClearEntryButtonPos0"
x:Uid="clearEntryButton"
HorizontalAlignment="Stretch"
Style="{StaticResource OperatorButtonStyle}"
FontSize="14"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=clearEntryButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.Name="{utils:ResourceString Name=clearEntryButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Clear"
Content="CE"
TabIndex="7"/>
<controls:CalculatorButton x:Name="BackSpaceButtonSmall"
x:Uid="backSpaceButton"
Grid.Column="1"
Style="{StaticResource SymbolOperatorButtonStyle}"
FontSize="14"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=backSpaceButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.Name="{utils:ResourceString Name=backSpaceButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Backspace"
Content="&#xE94F;"
TabIndex="8"/>
</Grid>
<local:NumberPad x:Name="NumberPad"
x:Uid="NumberPad"
Grid.Row="1"
Grid.RowSpan="4"
Grid.Column="0"
Grid.ColumnSpan="3"
VerticalAlignment="Stretch"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonStyle="{StaticResource NumericButtonStyle18}"
TabIndex="10"
TabNavigation="Local"/>
<controls:CalculatorButton x:Name="ConverterNegateButton"
x:Uid="converterNegateButton"
Grid.Row="4"
Grid.Column="0"
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
FontSize="16"
common:KeyboardShortcutManager.Character="{utils:ResourceString Name=converterNegateButton/[using:CalculatorApp.Common]KeyboardShortcutManager/Character}"
common:KeyboardShortcutManager.VirtualKey="{utils:ResourceVirtualKey Name=converterNegateButton/[using:CalculatorApp.Common]KeyboardShortcutManager/VirtualKey}"
AutomationProperties.Name="{utils:ResourceString Name=converterNegateButton/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}"
ButtonId="Negate"
Content="&#xF898;"
TabIndex="6"