Optimize and simplify CalculationResult to be able to update the FontSize and the DisplayMargin without fully updating the Style. (#217)

- Merge the 3 CalculationResultStyle(S|M|L) in App.xaml
- Only modify CalculationResult::*FontSize in Calculator.xaml instead of fully updating the style of the control.
- Create a new property MaxFontSize in order to be able to update it without being forced to fully update the Style (because m_startingFontSize was set in OnApplyTemplate)
- Modify how DisplayMargin is managed to prevent the textblock Margin to shift when we update its value (without fully updating the Style).
This commit is contained in:
Rudy Huyn
2019-04-05 13:04:39 -07:00
committed by Daniel Belcher
parent e7eace57f8
commit af41a183a7
7 changed files with 60 additions and 308 deletions

View File

@@ -255,48 +255,17 @@
</Style>
<!-- Calculation Result Styles -->
<Style x:Key="ResultsStyleL"
x:Name="ResultsStyleL"
BasedOn="{StaticResource CalculationResultStyleL}"
<Style x:Key="ResultsStyle"
BasedOn="{StaticResource CalculationResultStyle}"
TargetType="controls:CalculationResult">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="FontSize" Value="{StaticResource CalcResultFontSizeL}"/>
<Setter Property="MinFontSize" Value="12"/>
<Setter Property="IsActive" Value="True"/>
<Setter Property="DisplayMargin" Value="0,0,0,0"/>
<Setter Property="MaxExpressionHistoryCharacters" Value="51"/>
</Style>
<Style x:Key="ResultsStyleM"
x:Name="ResultsStyleM"
BasedOn="{StaticResource CalculationResultStyleM}"
TargetType="controls:CalculationResult">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="FontSize" Value="{StaticResource CalcResultFontSizeM}"/>
<Setter Property="MinFontSize" Value="12"/>
<Setter Property="IsActive" Value="True"/>
<Setter Property="DisplayMargin" Value="0,0,0,0"/>
<Setter Property="MaxExpressionHistoryCharacters" Value="30"/>
</Style>
<Style x:Key="ResultsStyleS"
x:Name="ResultsStyleS"
BasedOn="{StaticResource CalculationResultStyleS}"
TargetType="controls:CalculationResult">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="FontSize" Value="{StaticResource CalcResultFontSizeS}"/>
<Setter Property="MinFontSize" Value="12"/>
<Setter Property="IsActive" Value="True"/>
<Setter Property="DisplayMargin" Value="0,0,0,0"/>
<Setter Property="MaxExpressionHistoryCharacters" Value="30"/>
</Style>
<!-- Button Styles -->
<Style x:Key="ScrollButtonStyle" TargetType="Button">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0,0,0,0"/>
@@ -585,25 +554,34 @@
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowHeight="800"/>
</VisualState.StateTriggers>
<Storyboard Completed="OnResultsLayoutChanged"/>
<VisualState.Setters>
<Setter Target="Results.MaxFontSize" Value="72"/>
<Setter Target="Results.MaxExpressionHistoryCharacters" Value="51"/>
<Setter Target="RowResult.MinHeight" Value="108"/>
<Setter Target="RowResult.Height" Value="72*"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="ResultsProgM">
<VisualState x:Name="ResultsM">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowHeight="640"/>
<AdaptiveTrigger x:Name="ResultsMVisualStateTrigger" MinWindowHeight="640"/>
</VisualState.StateTriggers>
<Storyboard Completed="OnResultsLayoutChanged"/>
</VisualState>
<VisualState x:Name="ResultsSciM">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowHeight="544"/>
</VisualState.StateTriggers>
<Storyboard Completed="OnResultsLayoutChanged"/>
<VisualState.Setters>
<Setter Target="Results.MaxFontSize" Value="46"/>
<Setter Target="Results.MaxExpressionHistoryCharacters" Value="30"/>
<Setter Target="RowResult.MinHeight" Value="72"/>
<Setter Target="RowResult.Height" Value="72*"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="ResultsS">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowHeight="0"/>
</VisualState.StateTriggers>
<Storyboard Completed="OnResultsLayoutChanged"/>
<VisualState.Setters>
<Setter Target="Results.MaxFontSize" Value="26"/>
<Setter Target="Results.MaxExpressionHistoryCharacters" Value="30"/>
<Setter Target="RowResult.MinHeight" Value="42"/>
<Setter Target="RowResult.Height" Value="42*"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
@@ -630,7 +608,7 @@
x:Uid="CalculatorResults"
Grid.Row="2"
Margin="0,0,0,0"
Style="{ThemeResource ResultsStyleM}"
Style="{ThemeResource ResultsStyle}"
AutomationProperties.AutomationId="CalculatorResults"
AutomationProperties.HeadingLevel="Level1"
AutomationProperties.Name="{x:Bind Model.CalculationResultAutomationName, Mode=OneWay}"