MessageBox.xaml 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:hc="clr-namespace:HandyControl.Controls"
  4. xmlns:interactivity="clr-namespace:HandyControl.Interactivity">
  5. <Style x:Key="MessageBoxButtonStyle" BasedOn="{StaticResource ButtonDefault}" TargetType="Button">
  6. <Setter Property="MinWidth" Value="88"/>
  7. <Setter Property="Visibility" Value="{Binding IsEnabled,RelativeSource={RelativeSource Self},Converter={StaticResource Boolean2VisibilityConverter}}"/>
  8. <Setter Property="Margin" Value="5,0"/>
  9. </Style>
  10. <Style x:Key="MessageBoxPrimaryButtonStyle" BasedOn="{StaticResource ButtonPrimary}" TargetType="Button">
  11. <Setter Property="MinWidth" Value="88"/>
  12. <Setter Property="Visibility" Value="{Binding IsEnabled,RelativeSource={RelativeSource Self},Converter={StaticResource Boolean2VisibilityConverter}}"/>
  13. <Setter Property="Margin" Value="5,0"/>
  14. </Style>
  15. <Style TargetType="hc:MessageBox" BasedOn="{StaticResource WindowWin10}">
  16. <Setter Property="MinHeight" Value="172"/>
  17. <Setter Property="ShowInTaskbar" Value="False"/>
  18. <Setter Property="MinWidth" Value="335"/>
  19. <Setter Property="MaxWidth" Value="476"/>
  20. <Setter Property="MaxHeight" Value="680"/>
  21. <Setter Property="ResizeMode" Value="NoResize"/>
  22. <Setter Property="SizeToContent" Value="WidthAndHeight"/>
  23. <Setter Property="Template">
  24. <Setter.Value>
  25. <ControlTemplate TargetType="hc:MessageBox">
  26. <Border SnapsToDevicePixels="True" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
  27. <Grid Margin="{TemplateBinding Padding}">
  28. <Grid.RowDefinitions>
  29. <RowDefinition Height="Auto"/>
  30. <RowDefinition/>
  31. </Grid.RowDefinitions>
  32. <Grid Background="{TemplateBinding NonClientAreaBackground}" Name="PART_NonClientArea" TextElement.Foreground="{TemplateBinding NonClientAreaForeground}">
  33. <Grid.ColumnDefinitions>
  34. <ColumnDefinition/>
  35. <ColumnDefinition Width="Auto"/>
  36. </Grid.ColumnDefinitions>
  37. <StackPanel WindowChrome.IsHitTestVisibleInChrome="True" UseLayoutRounding="True" VerticalAlignment="Top" Grid.Column="1" HorizontalAlignment="Right" Orientation="Horizontal">
  38. <Button Background="{TemplateBinding CloseButtonBackground}" Foreground="{TemplateBinding CloseButtonForeground}" IsTabStop="False" Name="PART_ButtonClose" Height="29" Style="{StaticResource ButtonIcon}" Width="46" hc:IconElement.Geometry="{StaticResource CloseGeometry}" BorderThickness="1,0,0,0" hc:IconElement.Width="10" hc:IconElement.Height="10"/>
  39. </StackPanel>
  40. <Grid Grid.Column="0">
  41. <Grid.ColumnDefinitions>
  42. <ColumnDefinition Width="Auto"/>
  43. <ColumnDefinition Width="Auto"/>
  44. <ColumnDefinition/>
  45. </Grid.ColumnDefinitions>
  46. <Button Name="ButtonIcon" Visibility="{TemplateBinding Icon,Converter={StaticResource Object2VisibilityConverter}}" Command="{x:Static SystemCommands.ShowSystemMenuCommand}" Background="Transparent" Margin="10,0,0,0" WindowChrome.IsHitTestVisibleInChrome="True" Style="{StaticResource ButtonCustom}" VerticalAlignment="Center">
  47. <interactivity:Interaction.Triggers>
  48. <interactivity:EventTrigger EventName="MouseDoubleClick">
  49. <interactivity:InvokeCommandAction Command="{x:Static SystemCommands.CloseWindowCommand}" />
  50. </interactivity:EventTrigger>
  51. </interactivity:Interaction.Triggers>
  52. <Image IsHitTestVisible="False" Source="{TemplateBinding Icon}" VerticalAlignment="Center" Width="16" Height="16"/>
  53. </Button>
  54. <TextBlock Grid.Column="1" Text="{TemplateBinding Title}" Padding="10,0,0,0" VerticalAlignment="Center">
  55. <TextBlock.Visibility>
  56. <MultiBinding Converter="{StaticResource BooleanArr2VisibilityConverter}">
  57. <MultiBinding.Bindings>
  58. <Binding Path="ShowTitle" RelativeSource="{RelativeSource TemplatedParent}"/>
  59. <Binding Path="Title" RelativeSource="{RelativeSource TemplatedParent}" Converter="{StaticResource Object2BooleanConverter}"/>
  60. </MultiBinding.Bindings>
  61. </MultiBinding>
  62. </TextBlock.Visibility>
  63. </TextBlock>
  64. <ContentPresenter WindowChrome.IsHitTestVisibleInChrome="True" Grid.Column="2" x:Name="ContentPresenterMain" Content="{TemplateBinding NonClientAreaContent}"/>
  65. </Grid>
  66. </Grid>
  67. <AdornerDecorator Grid.Row="1">
  68. <Grid>
  69. <Grid.ColumnDefinitions>
  70. <ColumnDefinition Width="Auto"/>
  71. <ColumnDefinition/>
  72. </Grid.ColumnDefinitions>
  73. <Grid.RowDefinitions>
  74. <RowDefinition/>
  75. <RowDefinition Height="Auto"/>
  76. </Grid.RowDefinitions>
  77. <Path Data="{TemplateBinding Image}" Fill="{TemplateBinding ImageBrush}" HorizontalAlignment="Center" Visibility="{TemplateBinding ShowImage,Converter={StaticResource Boolean2VisibilityConverter}}" Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" Margin="20,32,0,0" Width="30" Height="30" Stretch="Uniform"/>
  78. <ScrollViewer Grid.Row="0" Grid.Column="1" VerticalAlignment="Top">
  79. <Border MinHeight="30" Margin="10,32,10,10" HorizontalAlignment="Left">
  80. <TextBlock VerticalAlignment="Center" Text="{TemplateBinding Message}" TextWrapping="Wrap" />
  81. </Border>
  82. </ScrollViewer>
  83. <StackPanel Name="PART_Panel" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Margin="0,10,0,16" Orientation="Horizontal" HorizontalAlignment="Center"/>
  84. </Grid>
  85. </AdornerDecorator>
  86. </Grid>
  87. </Border>
  88. <ControlTemplate.Triggers>
  89. <Trigger Property="IsActive" Value="False">
  90. <Setter Property="Opacity" Value=".8" TargetName="ContentPresenterMain"/>
  91. </Trigger>
  92. <Trigger Property="IsMouseOver" Value="True" SourceName="PART_ButtonClose">
  93. <Setter Property="Background" TargetName="PART_ButtonClose" Value="{Binding CloseButtonHoverBackground,RelativeSource={RelativeSource TemplatedParent}}"/>
  94. <Setter Property="Foreground" TargetName="PART_ButtonClose" Value="{Binding CloseButtonHoverForeground,RelativeSource={RelativeSource TemplatedParent}}"/>
  95. </Trigger>
  96. </ControlTemplate.Triggers>
  97. </ControlTemplate>
  98. </Setter.Value>
  99. </Setter>
  100. </Style>
  101. </ResourceDictionary>