Fix #409 - Some content in Currency Converter not right-aligned properly in RtL

Fix #59 Currency symbol precedence is opposite of system setting in RTL languages
This commit is contained in:
Rudy Huyn 2019-03-29 00:31:33 -07:00
commit bbd397a284
3 changed files with 19 additions and 17 deletions

View file

@ -1,4 +1,4 @@
<UserControl x:Class="CalculatorApp.UnitConverter"
<UserControl x:Class="CalculatorApp.UnitConverter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:automation="using:CalculatorApp.Common.Automation"
@ -492,9 +492,8 @@
<Grid x:Name="Value1Container"
Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Left"
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
Style="{ThemeResource ValueContainerStyle}"
FlowDirection="{x:Bind LayoutDirection}"
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
@ -517,7 +516,6 @@
ContextRequested="OnContextRequested"
DisplayValue="{x:Bind Model.Value1, Mode=OneWay}"
ExpressionVisibility="Collapsed"
FlowDirection="{x:Bind LayoutDirection}"
IsActive="{Binding Value1Active, Mode=TwoWay}"
KeyDown="OnValueKeyDown"
Selected="OnValueSelected"
@ -527,6 +525,7 @@
<ComboBox x:Name="Units1"
Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
Style="{ThemeResource ComboStyle}"
AutomationProperties.AutomationId="Units1"
AutomationProperties.Name="{x:Bind Model.Unit1AutomationName, Mode=OneWay}"
@ -544,9 +543,8 @@
<Grid x:Name="Value2Container"
Grid.Row="3"
Grid.Column="1"
HorizontalAlignment="Left"
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
Style="{ThemeResource ValueContainerStyle}"
FlowDirection="{x:Bind LayoutDirection}"
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
@ -570,7 +568,6 @@
ContextRequested="OnContextRequested"
DisplayValue="{x:Bind Model.Value2, Mode=OneWay}"
ExpressionVisibility="Collapsed"
FlowDirection="{x:Bind LayoutDirection}"
IsActive="{Binding Value2Active, Mode=TwoWay}"
KeyDown="OnValueKeyDown"
Selected="OnValueSelected"
@ -580,6 +577,7 @@
<ComboBox x:Name="Units2"
Grid.Row="4"
Grid.Column="1"
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
Style="{ThemeResource ComboStyle}"
AutomationProperties.AutomationId="Units2"
AutomationProperties.Name="{x:Bind Model.Unit2AutomationName, Mode=OneWay}"
@ -598,7 +596,7 @@
Grid.Column="1"
MinHeight="48"
Margin="12,0,6,0"
HorizontalAlignment="Left"
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
VerticalAlignment="Top"
FlowDirection="{x:Bind LayoutDirection}"
SizeChanged="SupplementaryResultsPanelInGrid_SizeChanged"

View file

@ -46,22 +46,17 @@ using namespace Windows::UI::ViewManagement;
static const long long DURATION_500_MS = 10000 * 500;
UnitConverter::UnitConverter() :
m_layoutDirection(::FlowDirection::LeftToRight),
m_meteredConnectionOverride(false),
m_isAnimationEnabled(false)
{
m_layoutDirection = LocalizationService::GetInstance()->GetFlowDirection();
m_FlowDirectionHorizontalAlignment = m_layoutDirection == ::FlowDirection::RightToLeft ? ::HorizontalAlignment::Right : ::HorizontalAlignment::Left;
InitializeComponent();
// adding ESC key shortcut binding to clear button
clearEntryButtonPos0->SetValue(Common::KeyboardShortcutManager::VirtualKeyProperty, Common::MyVirtualKey::Escape);
m_layoutDirection = LocalizationService::GetInstance()->GetFlowDirection();
if (m_layoutDirection == ::FlowDirection::RightToLeft)
{
Units1->HorizontalContentAlignment = ::HorizontalAlignment::Right;
Units2->HorizontalContentAlignment = ::HorizontalAlignment::Right;
}
// Is currency symbol preference set to right side
bool preferRight = LocalizationSettings::GetInstance().GetCurrencySymbolPrecedence() == 0;
VisualStateManager::GoToState(this, preferRight ? "CurrencySymbolRightState" : "CurrencySymbolLeftState", false);

View file

@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// UnitConverter.xaml.h
@ -40,6 +40,14 @@ namespace CalculatorApp
}
}
property Windows::UI::Xaml::HorizontalAlignment FlowDirectionHorizontalAlignment
{
Windows::UI::Xaml::HorizontalAlignment get()
{
return m_FlowDirectionHorizontalAlignment;
}
}
void SetDefaultFocus();
private:
@ -76,6 +84,7 @@ namespace CalculatorApp
void HideProgressRing();
private:
Windows::UI::Xaml::HorizontalAlignment m_FlowDirectionHorizontalAlignment;
Windows::UI::Xaml::FlowDirection m_layoutDirection;
Windows::Foundation::EventRegistrationToken m_propertyChangedToken;
Windows::UI::Xaml::Controls::MenuFlyout^ m_resultsFlyout;