feat: implement box shadow.

This commit is contained in:
rabbitism
2024-01-25 21:33:07 +08:00
parent 8d369290ff
commit 8bb6d51acb
2 changed files with 293 additions and 282 deletions

View File

@@ -3,44 +3,46 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:theme="clr-namespace:Ursa.Themes.Semi" xmlns:theme="clr-namespace:Ursa.Themes.Semi"
xmlns:u="https://irihi.tech/ursa"> xmlns:u="https://irihi.tech/ursa">
<ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost"> <ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost">
<Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" /> <Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" />
</ControlTheme> </ControlTheme>
<ControlTheme x:Key="{x:Type u:DialogControl}" TargetType="u:DialogControl"> <ControlTheme x:Key="{x:Type u:DialogControl}" TargetType="u:DialogControl">
<Setter Property="CornerRadius" Value="12"></Setter> <Setter Property="CornerRadius" Value="12" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="u:DialogControl"> <ControlTemplate TargetType="u:DialogControl">
<Border <Border
Margin="8"
Padding="0" Padding="0"
Margin="4"
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Classes="Shadow" Classes="Shadow"
ClipToBounds="False"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
ClipToBounds="True"
IsHitTestVisible="True" IsHitTestVisible="True"
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Grid RowDefinitions="Auto, *"> <Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}">
<ContentPresenter <Grid RowDefinitions="Auto, *">
Name="PART_ContentPresenter" <ContentPresenter
Grid.Row="0" Name="PART_ContentPresenter"
Grid.RowSpan="2" Grid.Row="0"
Content="{TemplateBinding Content}" /> Grid.RowSpan="2"
<Grid Grid.Row="0" ColumnDefinitions="*, Auto"> Content="{TemplateBinding Content}" />
<Panel <Grid Grid.Row="0" ColumnDefinitions="*, Auto">
Name="{x:Static u:DialogControl.PART_TitleArea}" <Panel
Grid.Column="0" Name="{x:Static u:DialogControl.PART_TitleArea}"
Grid.ColumnSpan="2" Grid.Column="0"
Background="Transparent" /> Grid.ColumnSpan="2"
<Button Background="Transparent" />
Name="{x:Static u:MessageBoxWindow.PART_CloseButton}" <Button
Grid.Column="1" Name="{x:Static u:MessageBoxWindow.PART_CloseButton}"
Margin="0,24,24,0" Grid.Column="1"
DockPanel.Dock="Right" Margin="0,24,24,0"
Theme="{DynamicResource CloseButton}" /> DockPanel.Dock="Right"
Theme="{DynamicResource CloseButton}" />
</Grid>
</Grid> </Grid>
</Grid> </Border>
</Border> </Border>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
@@ -95,207 +97,211 @@
</Setter> </Setter>
</Style> </Style>
</ControlTheme> </ControlTheme>
<ControlTheme x:Key="{x:Type u:DefaultDialogControl}" TargetType="u:DefaultDialogControl"> <ControlTheme x:Key="{x:Type u:DefaultDialogControl}" TargetType="u:DefaultDialogControl">
<Setter Property="CornerRadius" Value="12"></Setter> <Setter Property="CornerRadius" Value="12" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="u:DefaultDialogControl"> <ControlTemplate TargetType="u:DefaultDialogControl">
<Border <Border
Margin="10"
Padding="0" Padding="0"
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
BoxShadow="0 0 8 0 #1A000000"
Classes="Shadow" Classes="Shadow"
ClipToBounds="False"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
ClipToBounds="True"
IsHitTestVisible="True" IsHitTestVisible="True"
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Grid RowDefinitions="Auto, *, Auto"> <Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}">
<ContentPresenter <Grid RowDefinitions="Auto, *, Auto">
Name="PART_ContentPresenter" <ContentPresenter
Grid.Row="1" Name="PART_ContentPresenter"
Margin="24 8" Grid.Row="1"
Content="{TemplateBinding Content}" /> Margin="24,8"
<Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto"> Content="{TemplateBinding Content}" />
<Panel <Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto">
Name="{x:Static u:DialogControl.PART_TitleArea}" <Panel
Grid.Column="0" Name="{x:Static u:DialogControl.PART_TitleArea}"
Grid.ColumnSpan="3" Grid.Column="0"
Background="Transparent" /> Grid.ColumnSpan="3"
<PathIcon Background="Transparent" />
Name="PART_Icon" <PathIcon
Grid.Column="0" Name="PART_Icon"
Margin="24 24 8 0" Grid.Column="0"
Width="16" Width="16"
VerticalAlignment="Center" Height="16"
Height="16" /> Margin="24,24,8,0"
<TextBlock VerticalAlignment="Center" />
Name="PART_Title" <TextBlock
Grid.Column="1" Name="PART_Title"
Margin="0 24 0 0 " Grid.Column="1"
FontWeight="Bold" Margin="0,24,0,0"
FontSize="16" VerticalAlignment="Center"
TextWrapping="Wrap" FontSize="16"
VerticalAlignment="Center" FontWeight="Bold"
IsHitTestVisible="False" IsHitTestVisible="False"
IsVisible="{TemplateBinding Title, IsVisible="{TemplateBinding Title,
Converter={x:Static ObjectConverters.IsNotNull}}" Converter={x:Static ObjectConverters.IsNotNull}}"
Text="{TemplateBinding Title}" /> Text="{TemplateBinding Title}"
<Button TextWrapping="Wrap" />
Name="{x:Static u:MessageBoxWindow.PART_CloseButton}" <Button
Grid.Column="2" Name="{x:Static u:MessageBoxWindow.PART_CloseButton}"
Margin="0 24 24 0" Grid.Column="2"
DockPanel.Dock="Right" Margin="0,24,24,0"
Theme="{DynamicResource CloseButton}" /> DockPanel.Dock="Right"
Theme="{DynamicResource CloseButton}" />
</Grid>
<StackPanel
Grid.Row="2"
Margin="24,0,24,24"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}"
Margin="8,0,0,0"
Classes="Tertiary"
Content="取消" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0"
Classes="Danger"
Content="否"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="是"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="确认"
Theme="{DynamicResource SolidButton}" />
</StackPanel>
</Grid> </Grid>
<StackPanel </Border>
Grid.Row="2"
Margin="24 0 24 24"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}"
Margin="8,0,0,0"
Classes="Tertiary"
Content="取消" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0"
Classes="Danger"
Theme="{DynamicResource SolidButton}"
Content="否" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0"
Classes="Primary"
Theme="{DynamicResource SolidButton}"
Content="是" />
<Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0"
Classes="Primary"
Theme="{DynamicResource SolidButton}"
Content="确认" />
</StackPanel>
</Grid>
</Border> </Border>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="False"></Setter> <Setter Property="IsVisible" Value="False" />
</Style> </Style>
<Style Selector="^ /template/ TextBlock#PART_Title"> <Style Selector="^ /template/ TextBlock#PART_Title">
<Setter Property="Margin" Value="24 24 0 0"></Setter> <Setter Property="Margin" Value="24 24 0 0" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Info]"> <Style Selector="^[Mode=Info]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogInformationIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogInformationIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Warning]"> <Style Selector="^[Mode=Warning]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogWarningIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogWarningIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiOrange6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Error]"> <Style Selector="^[Mode=Error]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogErrorIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogErrorIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiRed6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiRed6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Question]"> <Style Selector="^[Mode=Question]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogQuestionIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogQuestionIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Success]"> <Style Selector="^[Mode=Success]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogSuccessIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogSuccessIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiGreen6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
@@ -390,7 +396,7 @@
<Grid Grid.Row="0" ColumnDefinitions="*, Auto"> <Grid Grid.Row="0" ColumnDefinitions="*, Auto">
<TextBlock <TextBlock
Grid.Column="0" Grid.Column="0"
Margin="24, 24,0,0" Margin="24,24,0,0"
FontSize="14" FontSize="14"
FontWeight="Bold" FontWeight="Bold"
Text="{TemplateBinding Title}" Text="{TemplateBinding Title}"
@@ -443,7 +449,7 @@
<ContentPresenter <ContentPresenter
Name="PART_ContentPresenter" Name="PART_ContentPresenter"
Grid.Row="1" Grid.Row="1"
Margin="24 8" Margin="24,8"
Content="{TemplateBinding Content}" /> Content="{TemplateBinding Content}" />
<Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto"> <Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto">
<Panel <Panel
@@ -454,32 +460,32 @@
<PathIcon <PathIcon
Name="PART_Icon" Name="PART_Icon"
Grid.Column="0" Grid.Column="0"
Margin="24 24 8 0"
Width="16" Width="16"
VerticalAlignment="Center" Height="16"
Height="16" /> Margin="24,24,8,0"
VerticalAlignment="Center" />
<TextBlock <TextBlock
Name="PART_Title" Name="PART_Title"
Grid.Column="1" Grid.Column="1"
Margin="0 24 0 0 " Margin="0,24,0,0"
FontWeight="Bold"
FontSize="16"
TextWrapping="Wrap"
VerticalAlignment="Center" VerticalAlignment="Center"
FontSize="16"
FontWeight="Bold"
IsHitTestVisible="False" IsHitTestVisible="False"
IsVisible="{TemplateBinding Title, IsVisible="{TemplateBinding Title,
Converter={x:Static ObjectConverters.IsNotNull}}" Converter={x:Static ObjectConverters.IsNotNull}}"
Text="{TemplateBinding Title}" /> Text="{TemplateBinding Title}"
TextWrapping="Wrap" />
<Button <Button
Name="{x:Static u:MessageBoxWindow.PART_CloseButton}" Name="{x:Static u:MessageBoxWindow.PART_CloseButton}"
Grid.Column="2" Grid.Column="2"
Margin="0 24 24 0" Margin="0,24,24,0"
DockPanel.Dock="Right" DockPanel.Dock="Right"
Theme="{DynamicResource CloseButton}" /> Theme="{DynamicResource CloseButton}" />
</Grid> </Grid>
<StackPanel <StackPanel
Grid.Row="2" Grid.Row="2"
Margin="24 0 24 24" Margin="24,0,24,24"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Orientation="Horizontal"> Orientation="Horizontal">
<Button <Button
@@ -491,20 +497,20 @@
Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0" Margin="8,0,0,0"
Classes="Danger" Classes="Danger"
Theme="{DynamicResource SolidButton}" Content="否"
Content="否" /> Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0" Margin="8,0,0,0"
Classes="Primary" Classes="Primary"
Theme="{DynamicResource SolidButton}" Content="是"
Content="是" /> Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0" Margin="8,0,0,0"
Classes="Primary" Classes="Primary"
Theme="{DynamicResource SolidButton}" Content="确认"
Content="确认" /> Theme="{DynamicResource SolidButton}" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</Panel> </Panel>
@@ -512,120 +518,120 @@
</Setter> </Setter>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="False"></Setter> <Setter Property="IsVisible" Value="False" />
</Style> </Style>
<Style Selector="^ /template/ TextBlock#PART_Title"> <Style Selector="^ /template/ TextBlock#PART_Title">
<Setter Property="Margin" Value="24 24 0 0"></Setter> <Setter Property="Margin" Value="24 24 0 0" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Info]"> <Style Selector="^[Mode=Info]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogInformationIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogInformationIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Warning]"> <Style Selector="^[Mode=Warning]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogWarningIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogWarningIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiOrange6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}"></Setter> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Error]"> <Style Selector="^[Mode=Error]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogErrorIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogErrorIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiRed6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiRed6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Question]"> <Style Selector="^[Mode=Question]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogQuestionIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogQuestionIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Success]"> <Style Selector="^[Mode=Success]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="True"></Setter> <Setter Property="IsVisible" Value="True" />
<Setter Property="Data" Value="{DynamicResource DialogSuccessIconGlyph}"></Setter> <Setter Property="Data" Value="{DynamicResource DialogSuccessIconGlyph}" />
<Setter Property="Foreground" Value="{DynamicResource SemiGreen6}"></Setter> <Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary"></Setter> <Setter Property="theme:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
</ControlTheme> </ControlTheme>

View File

@@ -35,21 +35,24 @@
<Panel Margin="{TemplateBinding WindowDecorationMargin}" Background="Transparent" /> <Panel Margin="{TemplateBinding WindowDecorationMargin}" Background="Transparent" />
<ChromeOverlayLayer /> <ChromeOverlayLayer />
<Grid RowDefinitions="Auto, *, Auto"> <Grid RowDefinitions="Auto, *, Auto">
<Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto" Margin="24 24 24 0"> <Grid
Grid.Row="0"
Margin="24,24,24,0"
ColumnDefinitions="Auto, *, Auto">
<PathIcon <PathIcon
Name="PART_Icon" Name="PART_Icon"
Grid.Column="0" Grid.Column="0"
Width="24" Width="24"
Height="24" Height="24"
Margin="0 0 8 0" Margin="0,0,8,0"
IsHitTestVisible="False" VerticalAlignment="Center"
VerticalAlignment="Center" /> IsHitTestVisible="False" />
<TextBlock <TextBlock
Grid.Column="1" Grid.Column="1"
VerticalAlignment="Center"
FontSize="16" FontSize="16"
FontWeight="Bold" FontWeight="Bold"
IsHitTestVisible="False" IsHitTestVisible="False"
VerticalAlignment="Center"
Text="{TemplateBinding Title}" Text="{TemplateBinding Title}"
TextTrimming="CharacterEllipsis" TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" /> TextWrapping="NoWrap" />
@@ -146,7 +149,7 @@
<ControlTheme x:Key="{x:Type u:MessageBoxControl}" TargetType="u:MessageBoxControl"> <ControlTheme x:Key="{x:Type u:MessageBoxControl}" TargetType="u:MessageBoxControl">
<Setter Property="CornerRadius" Value="12" /> <Setter Property="CornerRadius" Value="12" />
<Setter Property="Padding" Value="48 24"></Setter> <Setter Property="Padding" Value="48 24" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="u:MessageBoxControl"> <ControlTemplate TargetType="u:MessageBoxControl">
<Border <Border
@@ -154,88 +157,90 @@
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Classes="Shadow" Classes="Shadow"
ClipToBounds="True" ClipToBounds="False"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
IsHitTestVisible="True" IsHitTestVisible="True"
Theme="{DynamicResource CardBorder}"> Theme="{DynamicResource CardBorder}">
<Grid RowDefinitions="Auto, *, Auto"> <Border ClipToBounds="True" CornerRadius="{TemplateBinding CornerRadius}">
<Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto"> <Grid RowDefinitions="Auto, *, Auto">
<Panel <Grid Grid.Row="0" ColumnDefinitions="Auto, *, Auto">
Name="{x:Static u:DialogControl.PART_TitleArea}" <Panel
Grid.Column="0" Name="{x:Static u:DialogControl.PART_TitleArea}"
Grid.ColumnSpan="3" Grid.Column="0"
Background="Transparent" /> Grid.ColumnSpan="3"
<PathIcon Background="Transparent" />
Name="PART_Icon" <PathIcon
Grid.Column="0" Name="PART_Icon"
Width="24" Grid.Column="0"
Height="24" Width="24"
Margin="24,24,8,0" Height="24"
IsHitTestVisible="False" Margin="24,24,8,0"
VerticalAlignment="Center" />
<TextBlock
Name="PART_Title"
Grid.Column="1"
Margin="0,24,0,0"
FontSize="16"
VerticalAlignment="Center"
FontWeight="Bold"
Text="{TemplateBinding Title}"
IsHitTestVisible="False"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
<Button
Name="{x:Static u:MessageBoxWindow.PART_CloseButton}"
Grid.Column="2"
Margin="0,24,24,0"
Theme="{DynamicResource CloseButton}" />
</Grid>
<Grid
Grid.Row="1"
MaxWidth="{DynamicResource MessageBoxWindowContentMaxWidth}"
Margin="{TemplateBinding Padding}">
<ScrollViewer
MaxHeight="300"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<TextBlock
Name="PART_ContentPresenter"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="{TemplateBinding Content}" IsHitTestVisible="False" />
TextAlignment="Left" <TextBlock
TextWrapping="Wrap" /> Name="PART_Title"
</ScrollViewer> Grid.Column="1"
Margin="0,24,0,0"
VerticalAlignment="Center"
FontSize="16"
FontWeight="Bold"
IsHitTestVisible="False"
Text="{TemplateBinding Title}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
<Button
Name="{x:Static u:MessageBoxWindow.PART_CloseButton}"
Grid.Column="2"
Margin="0,24,24,0"
Theme="{DynamicResource CloseButton}" />
</Grid>
<Grid
Grid.Row="1"
MaxWidth="{DynamicResource MessageBoxWindowContentMaxWidth}"
Margin="{TemplateBinding Padding}">
<ScrollViewer
MaxHeight="300"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<TextBlock
Name="PART_ContentPresenter"
VerticalAlignment="Center"
Text="{TemplateBinding Content}"
TextAlignment="Left"
TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
<StackPanel
Grid.Row="2"
Margin="24,0,24,24"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:MessageBoxControl.PART_CancelButton}"
Margin="8,0,0,0"
Classes="Tertiary"
Content="Cancel" />
<Button
Name="{x:Static u:MessageBoxControl.PART_NoButton}"
Margin="8,0,0,0"
Classes="Danger"
Content="No"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:MessageBoxControl.PART_YesButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="Yes"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:MessageBoxControl.PART_OKButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="OK"
Theme="{DynamicResource SolidButton}" />
</StackPanel>
</Grid> </Grid>
<StackPanel </Border>
Grid.Row="2"
Margin="24,0,24,24"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Name="{x:Static u:MessageBoxControl.PART_CancelButton}"
Margin="8,0,0,0"
Classes="Tertiary"
Content="Cancel" />
<Button
Name="{x:Static u:MessageBoxControl.PART_NoButton}"
Margin="8,0,0,0"
Classes="Danger"
Content="No"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:MessageBoxControl.PART_YesButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="Yes"
Theme="{DynamicResource SolidButton}" />
<Button
Name="{x:Static u:MessageBoxControl.PART_OKButton}"
Margin="8,0,0,0"
Classes="Primary"
Content="OK"
Theme="{DynamicResource SolidButton}" />
</StackPanel>
</Grid>
</Border> </Border>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>