mirror of
https://github.com/microsoft/terminal.git
synced 2026-05-20 13:57:43 +00:00
port chevron animation & click handling; use WCT styling
This commit is contained in:
@@ -135,13 +135,30 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void SettingContainer::_UpdateHelpText()
|
||||
{
|
||||
const auto helpText{ HelpText() };
|
||||
|
||||
// Forward HelpText into the SettingsCard / SettingsExpander Description
|
||||
// slot so it renders through the WCT-ported PART_DescriptionPresenter.
|
||||
// Setting it to nullptr when empty collapses the description visually so we don't
|
||||
// reserve vertical space for a blank line.
|
||||
const auto description{ helpText.empty() ? Windows::Foundation::IInspectable{ nullptr } : box_value(helpText) };
|
||||
|
||||
// Get the correct base to apply automation properties to
|
||||
std::vector<DependencyObject> base;
|
||||
base.reserve(2);
|
||||
base.reserve(3);
|
||||
if (const auto& child{ GetTemplateChild(L"Card") })
|
||||
{
|
||||
if (const auto& card{ child.try_as<Editor::SettingsCard>() })
|
||||
{
|
||||
card.Description(description);
|
||||
base.push_back(child);
|
||||
}
|
||||
}
|
||||
if (const auto& child{ GetTemplateChild(L"Expander") })
|
||||
{
|
||||
if (const auto& expander{ child.try_as<Editor::SettingsExpander>() })
|
||||
{
|
||||
expander.Description(description);
|
||||
base.push_back(child);
|
||||
}
|
||||
}
|
||||
@@ -161,7 +178,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
Automation::AutomationProperties::SetName(obj, _GenerateAccessibleName());
|
||||
|
||||
// apply help text as tooltip and full description (automation property)
|
||||
if (const auto& helpText{ HelpText() }; !helpText.empty())
|
||||
if (!helpText.empty())
|
||||
{
|
||||
Automation::AutomationProperties::SetFullDescription(obj, helpText);
|
||||
}
|
||||
@@ -171,15 +188,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
Automation::AutomationProperties::SetFullDescription(obj, L"");
|
||||
}
|
||||
}
|
||||
|
||||
const auto textBlockHidden = HelpText().empty();
|
||||
if (const auto& child{ GetTemplateChild(L"HelpTextBlock") })
|
||||
{
|
||||
if (const auto& textBlock{ child.try_as<Controls::TextBlock>() })
|
||||
{
|
||||
textBlock.Visibility(textBlockHidden ? Visibility::Collapsed : Visibility::Visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SettingContainer::OnApplyTemplate()
|
||||
@@ -229,14 +237,21 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void SettingContainer::_UpdateHeaderIcon()
|
||||
{
|
||||
Controls::IconElement icon{ nullptr };
|
||||
if (const auto glyph{ FontIconGlyph() }; !glyph.empty())
|
||||
// Only forward FontIconGlyph into HeaderIcon when the caller actually
|
||||
// supplied a glyph. Some templates (Warning/Error) already set
|
||||
// SettingsCard.HeaderIcon in XAML to a stacked severity glyph; if we
|
||||
// unconditionally wrote nullptr here we'd clobber that XAML default for
|
||||
// every callsite that doesn't set FontIconGlyph.
|
||||
const auto glyph{ FontIconGlyph() };
|
||||
if (glyph.empty())
|
||||
{
|
||||
Controls::FontIcon fi;
|
||||
fi.Glyph(glyph);
|
||||
icon = fi;
|
||||
return;
|
||||
}
|
||||
|
||||
Controls::FontIcon fi;
|
||||
fi.Glyph(glyph);
|
||||
const Controls::IconElement icon{ fi };
|
||||
|
||||
if (const auto& cardChild{ GetTemplateChild(L"Card") })
|
||||
{
|
||||
if (const auto& card{ cardChild.try_as<Editor::SettingsCard>() })
|
||||
|
||||
@@ -29,16 +29,6 @@
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconBackground"
|
||||
ResourceKey="SystemFillColorCautionBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerErrorSeverityIconForeground"
|
||||
ResourceKey="TextFillColorInverseBrush" />
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconForeground"
|
||||
ResourceKey="TextFillColorInverseBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerTitleForeground"
|
||||
ResourceKey="TextFillColorPrimaryBrush" />
|
||||
<StaticResource x:Key="SettingContainerMessageForeground"
|
||||
ResourceKey="TextFillColorPrimaryBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerResetButtonIconForeground"
|
||||
ResourceKey="SystemAccentColorDark2" />
|
||||
</ResourceDictionary>
|
||||
@@ -58,16 +48,6 @@
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconBackground"
|
||||
ResourceKey="SystemColorHighlightColorBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerErrorSeverityIconForeground"
|
||||
ResourceKey="SystemColorHighlightTextColorBrush" />
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconForeground"
|
||||
ResourceKey="SystemColorHighlightTextColorBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerTitleForeground"
|
||||
ResourceKey="SystemColorWindowTextColorBrush" />
|
||||
<StaticResource x:Key="SettingContainerMessageForeground"
|
||||
ResourceKey="SystemColorWindowTextColorBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerResetButtonIconForeground"
|
||||
ResourceKey="SystemAccentColorLight1" />
|
||||
</ResourceDictionary>
|
||||
@@ -89,28 +69,14 @@
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconBackground"
|
||||
ResourceKey="SystemFillColorCautionBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerErrorSeverityIconForeground"
|
||||
ResourceKey="TextFillColorInverseBrush" />
|
||||
<StaticResource x:Key="SettingContainerWarningSeverityIconForeground"
|
||||
ResourceKey="TextFillColorInverseBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerTitleForeground"
|
||||
ResourceKey="TextFillColorPrimaryBrush" />
|
||||
<StaticResource x:Key="SettingContainerMessageForeground"
|
||||
ResourceKey="TextFillColorPrimaryBrush" />
|
||||
|
||||
<StaticResource x:Key="SettingContainerResetButtonIconForeground"
|
||||
ResourceKey="SystemAccentColorLight2" />
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
|
||||
<FontWeight x:Key="SettingContainerTitleFontWeight">SemiBold</FontWeight>
|
||||
|
||||
<x:String x:Key="SettingContainerIconBackgroundGlyph"></x:String>
|
||||
<x:String x:Key="SettingContainerErrorIconGlyph"></x:String>
|
||||
<x:String x:Key="SettingContainerWarningIconGlyph"></x:String>
|
||||
|
||||
<Thickness x:Key="SettingContainerIconMargin">0,4,8,4</Thickness>
|
||||
<x:Double x:Key="SettingContainerIconFontSize">16</x:Double>
|
||||
|
||||
<Style x:Key="SettingContainerResetButtonStyle"
|
||||
@@ -176,9 +142,10 @@
|
||||
<local:SettingsCard x:Name="Card"
|
||||
Content="{TemplateBinding Content}">
|
||||
<local:SettingsCard.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Style="{StaticResource SettingsPageItemHeaderStyle}"
|
||||
Text="{TemplateBinding Header}" />
|
||||
<StackPanel VerticalAlignment="Center"
|
||||
Orientation="Horizontal">
|
||||
<ContentControl Content="{TemplateBinding Header}"
|
||||
IsTabStop="False" />
|
||||
<Button x:Name="ResetButton"
|
||||
Style="{StaticResource SettingContainerResetButtonStyle}">
|
||||
<FontIcon Glyph=""
|
||||
@@ -186,11 +153,6 @@
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</local:SettingsCard.Header>
|
||||
<local:SettingsCard.Description>
|
||||
<TextBlock x:Name="HelpTextBlock"
|
||||
Style="{StaticResource SettingsPageItemDescriptionStyle}"
|
||||
Text="{TemplateBinding HelpText}" />
|
||||
</local:SettingsCard.Description>
|
||||
</local:SettingsCard>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
@@ -207,13 +169,12 @@
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="local:SettingContainer">
|
||||
<local:SettingsExpander x:Name="Expander"
|
||||
HorizontalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
IsExpanded="{TemplateBinding StartExpanded}">
|
||||
<local:SettingsExpander.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Style="{StaticResource SettingsPageItemHeaderStyle}"
|
||||
Text="{TemplateBinding Header}" />
|
||||
<StackPanel VerticalAlignment="Center"
|
||||
Orientation="Horizontal">
|
||||
<ContentControl Content="{TemplateBinding Header}"
|
||||
IsTabStop="False" />
|
||||
<Button x:Name="ResetButton"
|
||||
Style="{StaticResource SettingContainerResetButtonStyle}">
|
||||
<FontIcon Glyph=""
|
||||
@@ -221,13 +182,9 @@
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</local:SettingsExpander.Header>
|
||||
<local:SettingsExpander.Description>
|
||||
<TextBlock x:Name="HelpTextBlock"
|
||||
Style="{StaticResource SettingsPageItemDescriptionStyle}"
|
||||
Text="{TemplateBinding HelpText}" />
|
||||
</local:SettingsExpander.Description>
|
||||
<local:SettingsExpander.Content>
|
||||
<ContentControl MaxWidth="248"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalContentAlignment="Right"
|
||||
Content="{TemplateBinding CurrentValue}"
|
||||
@@ -254,41 +211,18 @@
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="local:SettingContainer">
|
||||
<local:SettingsCard Background="{ThemeResource SettingContainerWarningSeverityBackgroundBrush}">
|
||||
<local:SettingsCard x:Name="Card"
|
||||
Background="{ThemeResource SettingContainerWarningSeverityBackgroundBrush}">
|
||||
<local:SettingsCard.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Grid>
|
||||
<TextBlock x:Name="IconBackground"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource SettingContainerIconMargin}"
|
||||
VerticalAlignment="Center"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerWarningSeverityIconBackground}"
|
||||
Text="{StaticResource SettingContainerIconBackgroundGlyph}" />
|
||||
<TextBlock x:Name="StandardIcon"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource SettingContainerIconMargin}"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerWarningSeverityIconForeground}"
|
||||
Text="{StaticResource SettingContainerWarningIconGlyph}" />
|
||||
</Grid>
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
FontWeight="{StaticResource SettingContainerTitleFontWeight}"
|
||||
Foreground="{ThemeResource SettingContainerTitleForeground}"
|
||||
Style="{StaticResource SettingsPageItemHeaderStyle}"
|
||||
Text="{TemplateBinding Header}" />
|
||||
</StackPanel>
|
||||
<ContentControl Content="{TemplateBinding Header}"
|
||||
IsTabStop="False" />
|
||||
</local:SettingsCard.Header>
|
||||
<local:SettingsCard.Description>
|
||||
<TextBlock x:Name="HelpTextBlock"
|
||||
Foreground="{ThemeResource SettingContainerMessageForeground}"
|
||||
Style="{StaticResource SettingsPageItemDescriptionStyle}"
|
||||
Text="{TemplateBinding HelpText}" />
|
||||
</local:SettingsCard.Description>
|
||||
<local:SettingsCard.HeaderIcon>
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerWarningSeverityIconBackground}"
|
||||
Glyph="{StaticResource SettingContainerWarningIconGlyph}" />
|
||||
</local:SettingsCard.HeaderIcon>
|
||||
</local:SettingsCard>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
@@ -304,41 +238,18 @@
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="local:SettingContainer">
|
||||
<local:SettingsCard Background="{ThemeResource SettingContainerErrorSeverityBackgroundBrush}">
|
||||
<local:SettingsCard x:Name="Card"
|
||||
Background="{ThemeResource SettingContainerErrorSeverityBackgroundBrush}">
|
||||
<local:SettingsCard.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Grid>
|
||||
<TextBlock x:Name="IconBackground"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource SettingContainerIconMargin}"
|
||||
VerticalAlignment="Center"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerErrorSeverityIconBackground}"
|
||||
Text="{StaticResource SettingContainerIconBackgroundGlyph}" />
|
||||
<TextBlock x:Name="StandardIcon"
|
||||
Grid.Column="0"
|
||||
Margin="{StaticResource SettingContainerIconMargin}"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerErrorSeverityIconForeground}"
|
||||
Text="{StaticResource SettingContainerErrorIconGlyph}" />
|
||||
</Grid>
|
||||
<TextBlock VerticalAlignment="Center"
|
||||
FontWeight="{StaticResource SettingContainerTitleFontWeight}"
|
||||
Foreground="{ThemeResource SettingContainerTitleForeground}"
|
||||
Style="{StaticResource SettingsPageItemHeaderStyle}"
|
||||
Text="{TemplateBinding Header}" />
|
||||
</StackPanel>
|
||||
<ContentControl Content="{TemplateBinding Header}"
|
||||
IsTabStop="False" />
|
||||
</local:SettingsCard.Header>
|
||||
<local:SettingsCard.Description>
|
||||
<TextBlock x:Name="HelpTextBlock"
|
||||
Foreground="{ThemeResource SettingContainerMessageForeground}"
|
||||
Style="{StaticResource SettingsPageItemDescriptionStyle}"
|
||||
Text="{TemplateBinding HelpText}" />
|
||||
</local:SettingsCard.Description>
|
||||
<local:SettingsCard.HeaderIcon>
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{StaticResource SettingContainerIconFontSize}"
|
||||
Foreground="{ThemeResource SettingContainerErrorSeverityIconBackground}"
|
||||
Glyph="{StaticResource SettingContainerErrorIconGlyph}" />
|
||||
</local:SettingsCard.HeaderIcon>
|
||||
</local:SettingsCard>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
|
||||
@@ -142,6 +142,30 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
return winrt::make<implementation::SettingsCardAutomationPeer>(*this);
|
||||
}
|
||||
|
||||
// Pointer overrides: gate the ButtonBase click pipeline on IsClickEnabled.
|
||||
// When IsClickEnabled=false, we do NOT call the base method, so the event
|
||||
// is left unhandled and bubbles up the visual tree. This is what lets the
|
||||
// SettingsExpander header (a ToggleButton hosting a SettingsCard with
|
||||
// IsClickEnabled=false) toggle on a click anywhere across the header row,
|
||||
// not just on the chevron. Mirrors the Community Toolkit's SettingsCard.cs.
|
||||
void SettingsCard::OnPointerPressed(const winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs& e)
|
||||
{
|
||||
if (IsClickEnabled())
|
||||
{
|
||||
base_type::OnPointerPressed(e);
|
||||
_GoToCommonState(PressedState, true);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsCard::OnPointerReleased(const winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs& e)
|
||||
{
|
||||
if (IsClickEnabled())
|
||||
{
|
||||
base_type::OnPointerReleased(e);
|
||||
_GoToCommonState(NormalState, true);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsCard::OnApplyTemplate()
|
||||
{
|
||||
// Drop any handlers from a previous template.
|
||||
@@ -296,18 +320,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
strongThis->_GoToCommonState(NormalState, true);
|
||||
}
|
||||
});
|
||||
_pointerPressedRevoker = PointerPressed(winrt::auto_revoke, [weakThis = get_weak()](auto&&, auto&&) {
|
||||
if (const auto strongThis = weakThis.get())
|
||||
{
|
||||
strongThis->_GoToCommonState(PressedState, true);
|
||||
}
|
||||
});
|
||||
_pointerReleasedRevoker = PointerReleased(winrt::auto_revoke, [weakThis = get_weak()](auto&&, auto&&) {
|
||||
if (const auto strongThis = weakThis.get())
|
||||
{
|
||||
strongThis->_GoToCommonState(NormalState, true);
|
||||
}
|
||||
});
|
||||
_pointerCaptureLostRevoker = PointerCaptureLost(winrt::auto_revoke, [weakThis = get_weak()](auto&&, auto&&) {
|
||||
if (const auto strongThis = weakThis.get())
|
||||
{
|
||||
@@ -356,8 +368,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
IsTabStop(false);
|
||||
_pointerEnteredRevoker.revoke();
|
||||
_pointerExitedRevoker.revoke();
|
||||
_pointerPressedRevoker.revoke();
|
||||
_pointerReleasedRevoker.revoke();
|
||||
_pointerCaptureLostRevoker.revoke();
|
||||
_pointerCanceledRevoker.revoke();
|
||||
_previewKeyDownRevoker.revoke();
|
||||
|
||||
@@ -28,6 +28,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
SettingsCard();
|
||||
|
||||
void OnApplyTemplate();
|
||||
void OnPointerPressed(const Windows::UI::Xaml::Input::PointerRoutedEventArgs& e);
|
||||
void OnPointerReleased(const Windows::UI::Xaml::Input::PointerRoutedEventArgs& e);
|
||||
|
||||
// Automation peer override.
|
||||
Windows::UI::Xaml::Automation::Peers::AutomationPeer OnCreateAutomationPeer();
|
||||
@@ -68,8 +70,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
Windows::UI::Xaml::Controls::Control::IsEnabledChanged_revoker _isEnabledChangedRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerEntered_revoker _pointerEnteredRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerExited_revoker _pointerExitedRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerPressed_revoker _pointerPressedRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerReleased_revoker _pointerReleasedRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerCaptureLost_revoker _pointerCaptureLostRevoker;
|
||||
Windows::UI::Xaml::UIElement::PointerCanceled_revoker _pointerCanceledRevoker;
|
||||
Windows::UI::Xaml::UIElement::PreviewKeyDown_revoker _previewKeyDownRevoker;
|
||||
|
||||
@@ -700,8 +700,9 @@
|
||||
<!--
|
||||
Header ToggleButton style for the custom Expander template above.
|
||||
Drives header coloring to match a sibling SettingsCard, and animates
|
||||
the chevron's AnimatedIcon between NormalOn/Off, PointerOverOn/Off,
|
||||
and PressedOn/Off states.
|
||||
the chevron's rotation between 0° (collapsed) and 180° (expanded) via
|
||||
a DoubleAnimation on a RotateTransform. (The toolkit uses a Lottie
|
||||
AnimatedIcon morph; see comment on ExpandCollapseChevron below.)
|
||||
-->
|
||||
<Style x:Key="SettingsExpanderHeaderDownStyle"
|
||||
TargetType="ToggleButton">
|
||||
@@ -756,9 +757,10 @@
|
||||
<!--
|
||||
Toolkit uses a muxc:AnimatedIcon wrapping AnimatedChevronUpDownSmallVisualSource.
|
||||
That visual source isn't available in the WinUI 2 build the editor targets, so
|
||||
we fall back to a static FontIcon. We rotate it 180° in the Checked* states to
|
||||
indicate the expanded state (mirrors the visual outcome of the animated icon,
|
||||
without the morph animation).
|
||||
we fall back to a static FontIcon and drive a RotateTransform via the
|
||||
Checked*/unchecked CommonStates Storyboards (DoubleAnimation between 0° and 180°).
|
||||
This reproduces the smooth expand/collapse chevron animation visually, even
|
||||
without the toolkit's Lottie morph.
|
||||
-->
|
||||
<FontIcon x:Name="ExpandCollapseChevron"
|
||||
Width="16"
|
||||
@@ -802,6 +804,14 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBackground}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="0"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="PointerOver">
|
||||
@@ -826,6 +836,14 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBackgroundPointerOver}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="0"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Pressed">
|
||||
@@ -850,6 +868,14 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBackgroundPressed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="0"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Disabled">
|
||||
@@ -869,6 +895,14 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource ExpanderHeaderDisabledForeground}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="0"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Checked">
|
||||
@@ -893,10 +927,15 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource ExpanderChevronBackground}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="180"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ExpandCollapseChevronRotation.Angle" Value="180" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CheckedPointerOver">
|
||||
<Storyboard>
|
||||
@@ -920,10 +959,15 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBackgroundPointerOver}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="180"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ExpandCollapseChevronRotation.Angle" Value="180" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CheckedPressed">
|
||||
<Storyboard>
|
||||
@@ -947,10 +991,15 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBackgroundPressed}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="180"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ExpandCollapseChevronRotation.Angle" Value="180" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CheckedDisabled">
|
||||
<Storyboard>
|
||||
@@ -969,10 +1018,15 @@
|
||||
<DiscreteObjectKeyFrame KeyTime="0"
|
||||
Value="{ThemeResource SettingsCardBorderBrushDisabled}" />
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Storyboard.TargetName="ExpandCollapseChevronRotation"
|
||||
Storyboard.TargetProperty="Angle"
|
||||
To="180"
|
||||
Duration="0:0:0.167">
|
||||
<DoubleAnimation.EasingFunction>
|
||||
<CubicEase EasingMode="EaseOut" />
|
||||
</DoubleAnimation.EasingFunction>
|
||||
</DoubleAnimation>
|
||||
</Storyboard>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ExpandCollapseChevronRotation.Angle" Value="180" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Indeterminate" />
|
||||
<VisualState x:Name="IndeterminatePointerOver" />
|
||||
|
||||
Reference in New Issue
Block a user