Files
Shrlalgo.RvKits/WPFluent/Controls/MessageBox/MessageBoxDialog.xaml

345 lines
28 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPFluent.Controls"
xmlns:primitives="clr-namespace:WPFluent.Controls.Primitives"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml">
<sys:Double x:Key="ContentDialogMinWidth">320</sys:Double>
<sys:Double x:Key="ContentDialogMaxWidth">548</sys:Double>
<sys:Double x:Key="ContentDialogMinHeight">184</sys:Double>
<sys:Double x:Key="ContentDialogMaxHeight">756</sys:Double>
<sys:Double x:Key="ContentDialogButtonMinWidth">130</sys:Double>
<sys:Double x:Key="ContentDialogButtonMaxWidth">202</sys:Double>
<sys:Double x:Key="ContentDialogButtonMinHeight">32</sys:Double>
<sys:Double x:Key="ContentDialogButtonHeight">32</sys:Double>
<sys:Double x:Key="ContentDialogTitleMaxHeight">56</sys:Double>
<Thickness x:Key="ContentDialogBorderWidth">0</Thickness>
<Thickness x:Key="ContentDialogButton1HostMargin">0,0,4,0</Thickness>
<Thickness x:Key="ContentDialogButton2HostMargin">0,0,0,0</Thickness>
<Thickness x:Key="ContentDialogContentMargin">0,0,0,0</Thickness>
<Thickness x:Key="ContentDialogContentScrollViewerMargin">0,0,0,0</Thickness>
<Thickness x:Key="ContentDialogCommandSpaceMargin">0,24,0,0</Thickness>
<Thickness x:Key="ContentDialogTitleMargin">0,0,0,24</Thickness>
<Thickness x:Key="ContentDialogPadding">24</Thickness>
<GridLength x:Key="ContentDialogButtonSpacing">8</GridLength>
<SolidColorBrush x:Key="ContentDialogTopOverlay" Color="Transparent" />
<FontFamily x:Key="SymbolThemeFontFamily">pack://application:,,,/WPFluent;component/Resources/Fonts/Segoe Fluent Icons.ttf#Segoe Fluent Icons</FontFamily>
<WindowChrome
x:Key="MessageBoxAeroWindowChrome"
x:Shared="False"
GlassFrameThickness="-1"
NonClientFrameEdges="None"
ResizeBorderThickness="0"
UseAeroCaptionButtons="True" />
<Style TargetType="{x:Type local:MessageBoxDialog}">
<Setter Property="Foreground" Value="{DynamicResource ContentDialogForeground}" />
<Setter Property="Background" Value="{DynamicResource ContentDialogBackground}" />
<Setter Property="BorderThickness" Value="{DynamicResource ContentDialogBorderWidth}" />
<Setter Property="BorderBrush" Value="{DynamicResource ContentDialogBorderBrush}" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="CornerRadius" Value="{DynamicResource OverlayCornerRadius}" />
<Setter Property="OKButtonStyle" Value="{DynamicResource DefaultButtonStyle}" />
<Setter Property="YesButtonStyle" Value="{DynamicResource DefaultButtonStyle}" />
<Setter Property="NoButtonStyle" Value="{DynamicResource DefaultButtonStyle}" />
<Setter Property="CancelButtonStyle" Value="{DynamicResource DefaultButtonStyle}" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
<Setter Property="FontFamily" Value="{DynamicResource TextThemeFontFamily}" />
<Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
<Setter Property="UseLayoutRounding" Value="True" />
<Setter Property="WindowChrome.WindowChrome" Value="{StaticResource MessageBoxAeroWindowChrome}" />
<Setter Property="SizeToContent" Value="WidthAndHeight" />
<Setter Property="ResizeMode" Value="NoResize" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MessageBoxDialog}">
<Border x:Name="Container">
<Grid x:Name="LayoutRoot" SnapsToDevicePixels="True">
<Grid
x:Name="BackgroundElement"
MinWidth="{StaticResource ContentDialogMinWidth}"
MinHeight="{StaticResource ContentDialogMinHeight}"
MaxWidth="{StaticResource ContentDialogMaxWidth}"
MaxHeight="{StaticResource ContentDialogMaxHeight}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FlowDirection="{TemplateBinding FlowDirection}"
RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<ScaleTransform x:Name="ScaleTransform" />
</Grid.RenderTransform>
<Border
x:Name="BackgroundBorder"
Background="{TemplateBinding Background}"
CornerRadius="{TemplateBinding CornerRadius}"
Opacity="0" />
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
ClipToBounds="True"
CornerRadius="{TemplateBinding CornerRadius}">
<Border x:Name="DialogSpace">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ScrollViewer
x:Name="ContentScrollViewer"
HorizontalScrollBarVisibility="Disabled"
IsTabStop="False"
VerticalScrollBarVisibility="Disabled">
<Border Padding="{StaticResource ContentDialogPadding}" Background="{DynamicResource ContentDialogTopOverlay}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentControl
x:Name="Title"
Margin="{StaticResource ContentDialogTitleMargin}"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="{TemplateBinding Caption}"
ContentTemplate="{TemplateBinding CaptionTemplate}"
FontFamily="{DynamicResource TextThemeFontFamily}"
FontSize="20"
FontWeight="SemiBold"
Foreground="{TemplateBinding Foreground}"
IsTabStop="False"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<ContentControl.Template>
<ControlTemplate TargetType="ContentControl">
<ContentPresenter
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
<Grid x:Name="MessagePanel" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<!-- UserIconBox is not supported nowadays -->
<ContentControl
x:Name="UserIconBox"
Margin="0,0,16,0"
VerticalAlignment="Center"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.IconElement}"
IsTabStop="False"
Visibility="Collapsed" />
<TextBlock
x:Name="UserIconBlock"
Width="36"
Height="36"
Margin="4,0,16,0"
HorizontalAlignment="Center"
VerticalAlignment="Top"
FontFamily="{DynamicResource SymbolThemeFontFamily}"
FontSize="36"
Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MessageBoxIcon, Converter={x:Static local:MessageBoxIconForegroundConverter.New}}"
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MessageBoxIcon, Converter={x:Static local:MessageBoxIconConverter.New}}" />
</Grid>
<Grid Grid.Column="1" VerticalAlignment="Center">
<Grid.Resources>
<DataTemplate x:Key="StringTemplate">
<ScrollViewer Padding="0,0,12,0">
<TextBlock Text="{Binding}" TextWrapping="Wrap" />
</ScrollViewer>
</DataTemplate>
<DataTemplate x:Key="DefaultTemplate">
<ContentPresenter Content="{Binding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</DataTemplate>
<local:MessageBoxContentTemplateSelector
x:Key="TemplateSelector"
DefaultTemplate="{StaticResource DefaultTemplate}"
StringTemplate="{StaticResource StringTemplate}" />
</Grid.Resources>
<ContentPresenter ContentTemplateSelector="{StaticResource TemplateSelector}" />
</Grid>
</Grid>
</Grid>
</Border>
</ScrollViewer>
<Grid
x:Name="CommandSpace"
Grid.Row="1"
Margin="{StaticResource ContentDialogPadding}"
HorizontalAlignment="Stretch"
VerticalAlignment="Bottom"
KeyboardNavigation.DirectionalNavigation="Contained">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="PrimaryColumn" Width="*" />
<ColumnDefinition x:Name="FirstSpacer" Width="{StaticResource ContentDialogButtonSpacing}" />
<ColumnDefinition x:Name="SecondaryColumn" Width="*" />
<ColumnDefinition x:Name="SecondSpacer" Width="{StaticResource ContentDialogButtonSpacing}" />
<ColumnDefinition x:Name="CloseColumn" Width="*" />
</Grid.ColumnDefinitions>
<Button
x:Name="PART_OKButton"
Grid.Column="0"
HorizontalAlignment="Stretch"
Content="{Binding TemplateSettings.OKButtonText, RelativeSource={RelativeSource Mode=TemplatedParent}}"
FontFamily="{DynamicResource TextThemeFontFamily}"
Style="{TemplateBinding OKButtonStyle}" />
<Button
x:Name="PART_YesButton"
Grid.Column="0"
HorizontalAlignment="Stretch"
Content="{Binding TemplateSettings.YesButtonText, RelativeSource={RelativeSource Mode=TemplatedParent}}"
FontFamily="{DynamicResource TextThemeFontFamily}"
Style="{TemplateBinding YesButtonStyle}" />
<Button
x:Name="PART_NoButton"
Grid.Column="2"
HorizontalAlignment="Stretch"
Content="{Binding TemplateSettings.NoButtonText, RelativeSource={RelativeSource Mode=TemplatedParent}}"
FontFamily="{DynamicResource TextThemeFontFamily}"
Style="{TemplateBinding NoButtonStyle}" />
<Button
x:Name="PART_CancelButton"
Grid.Column="4"
HorizontalAlignment="Stretch"
Content="{Binding TemplateSettings.CancelButtonText, RelativeSource={RelativeSource Mode=TemplatedParent}}"
FontFamily="{DynamicResource TextThemeFontFamily}"
Style="{TemplateBinding CancelButtonStyle}" />
</Grid>
</Grid>
</Border>
</Border>
</Grid>
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ButtonsVisibilityStates">
<VisualState x:Name="YesNoCancelVisible">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_OKButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="OKVisible">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FirstSpacer" Storyboard.TargetProperty="Width">
<DiscreteObjectKeyFrame KeyTime="0:0:0">
<DiscreteObjectKeyFrame.Value>
<GridLength>0</GridLength>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SecondSpacer" Storyboard.TargetProperty="Width">
<DiscreteObjectKeyFrame KeyTime="0:0:0">
<DiscreteObjectKeyFrame.Value>
<GridLength>0</GridLength>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<Int32AnimationUsingKeyFrames Storyboard.TargetName="PART_OKButton" Storyboard.TargetProperty="(Grid.Column)">
<DiscreteInt32KeyFrame KeyTime="0:0:0" Value="4" />
</Int32AnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_YesButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_NoButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_CancelButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="OKCancelVisible">
<Storyboard>
<Int32AnimationUsingKeyFrames Storyboard.TargetName="PART_OKButton" Storyboard.TargetProperty="(Grid.Column)">
<DiscreteInt32KeyFrame KeyTime="0:0:0" Value="2" />
</Int32AnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_YesButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_NoButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="YesNoVisible">
<Storyboard>
<Int32AnimationUsingKeyFrames Storyboard.TargetName="PART_YesButton" Storyboard.TargetProperty="(Grid.Column)">
<DiscreteInt32KeyFrame KeyTime="0:0:0" Value="2" />
</Int32AnimationUsingKeyFrames>
<Int32AnimationUsingKeyFrames Storyboard.TargetName="PART_NoButton" Storyboard.TargetProperty="(Grid.Column)">
<DiscreteInt32KeyFrame KeyTime="0:0:0" Value="4" />
</Int32AnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_OKButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_CancelButton" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="DefaultButtonStates">
<primitives:VisualStateGroupListener.Listener>
<primitives:VisualStateGroupListener x:Name="DefaultButtonStatesListener" />
</primitives:VisualStateGroupListener.Listener>
<VisualState x:Name="OKAsDefaultButton" />
<VisualState x:Name="YesAsDefaultButton" />
</VisualStateGroup>
<VisualStateGroup x:Name="TitleVisibleStates">
<VisualState x:Name="TitleVisible">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Title" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="TitleCollapsed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MessagePanel" Storyboard.TargetProperty="VerticalAlignment">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static VerticalAlignment.Center}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="IconVisibleStates">
<VisualState x:Name="IconVisible">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="UserIconBlock" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="IconCollapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="WindowStyle" Value="None">
<Setter TargetName="BackgroundBorder" Property="Opacity" Value="0" />
</Trigger>
<!-- OKAsDefaultButton -->
<Trigger SourceName="DefaultButtonStatesListener" Property="CurrentStateName" Value="OKAsDefaultButton">
<Setter TargetName="PART_OKButton" Property="Style" Value="{DynamicResource AccentButtonStyle}" />
</Trigger>
<!-- YesAsDefaultButton -->
<Trigger SourceName="DefaultButtonStatesListener" Property="CurrentStateName" Value="YesAsDefaultButton">
<Setter TargetName="PART_YesButton" Property="Style" Value="{DynamicResource AccentButtonStyle}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>