ExpanderBaseStyle.xaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. <ControlTemplate x:Key="ExpanderLeftTemplate" TargetType="Expander">
  5. <Grid>
  6. <Grid.ColumnDefinitions>
  7. <ColumnDefinition />
  8. <ColumnDefinition Width="Auto" />
  9. </Grid.ColumnDefinitions>
  10. <ToggleButton x:Name="ToggleButton" Grid.Column="1" hc:BorderElement.CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Focusable="False" Padding="0,0,0,10" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" MinWidth="{TemplateBinding MinWidth}" Style="{StaticResource ToggleButtonCustom}">
  11. <Grid>
  12. <Grid.ColumnDefinitions>
  13. <ColumnDefinition />
  14. <ColumnDefinition Width="30" />
  15. </Grid.ColumnDefinitions>
  16. <Grid.LayoutTransform>
  17. <TransformGroup>
  18. <RotateTransform Angle="-90" />
  19. </TransformGroup>
  20. </Grid.LayoutTransform>
  21. <ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  22. <Path Name="PathArrow" IsHitTestVisible="False" Grid.Column="1" Stretch="Uniform" Fill="{TemplateBinding Foreground}" Data="{StaticResource UpGeometry}" Width="12" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="Center" />
  23. </Grid>
  24. </ToggleButton>
  25. <ContentPresenter Name="ExpandSite" Visibility="Collapsed" Grid.Column="0" />
  26. </Grid>
  27. <ControlTemplate.Triggers>
  28. <Trigger Property="IsExpanded" Value="true">
  29. <Setter Property="hc:BorderElement.CornerRadius" TargetName="ToggleButton" Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='0,1,1,0'}" />
  30. <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" />
  31. <Setter Property="Data" TargetName="PathArrow" Value="{StaticResource DownGeometry}" />
  32. </Trigger>
  33. <Trigger Property="IsEnabled" Value="false">
  34. <Setter Property="Opacity" Value=".4" />
  35. </Trigger>
  36. </ControlTemplate.Triggers>
  37. </ControlTemplate>
  38. <ControlTemplate x:Key="ExpanderUpTemplate" TargetType="Expander">
  39. <Grid>
  40. <Grid.RowDefinitions>
  41. <RowDefinition />
  42. <RowDefinition Height="Auto" />
  43. </Grid.RowDefinitions>
  44. <ToggleButton x:Name="ToggleButton" Grid.Row="1" hc:BorderElement.CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Focusable="False" Padding="10,0,0,0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" MinHeight="{TemplateBinding MinHeight}" Style="{StaticResource ToggleButtonCustom}">
  45. <Grid>
  46. <Grid.ColumnDefinitions>
  47. <ColumnDefinition />
  48. <ColumnDefinition Width="30" />
  49. </Grid.ColumnDefinitions>
  50. <ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  51. <Path Name="PathArrow" IsHitTestVisible="False" Grid.Column="1" Stretch="Uniform" Fill="{TemplateBinding Foreground}" Data="{StaticResource UpGeometry}" Width="12" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="Center" />
  52. </Grid>
  53. </ToggleButton>
  54. <ContentPresenter Name="ExpandSite" Visibility="Collapsed" Grid.Row="0" />
  55. </Grid>
  56. <ControlTemplate.Triggers>
  57. <Trigger Property="IsExpanded" Value="true">
  58. <Setter Property="hc:BorderElement.CornerRadius" TargetName="ToggleButton" Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='0,0,1,1'}" />
  59. <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" />
  60. <Setter Property="Data" TargetName="PathArrow" Value="{StaticResource DownGeometry}" />
  61. </Trigger>
  62. <Trigger Property="IsEnabled" Value="false">
  63. <Setter Property="Opacity" Value=".4" />
  64. </Trigger>
  65. </ControlTemplate.Triggers>
  66. </ControlTemplate>
  67. <ControlTemplate x:Key="ExpanderRightTemplate" TargetType="Expander">
  68. <Grid>
  69. <Grid.ColumnDefinitions>
  70. <ColumnDefinition Width="Auto" />
  71. <ColumnDefinition />
  72. </Grid.ColumnDefinitions>
  73. <ToggleButton x:Name="ToggleButton" hc:BorderElement.CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Focusable="False" Padding="0,0,0,10" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" MinWidth="{TemplateBinding MinWidth}" Style="{StaticResource ToggleButtonCustom}">
  74. <Grid>
  75. <Grid.ColumnDefinitions>
  76. <ColumnDefinition />
  77. <ColumnDefinition Width="30" />
  78. </Grid.ColumnDefinitions>
  79. <Grid.LayoutTransform>
  80. <TransformGroup>
  81. <RotateTransform Angle="-90" />
  82. </TransformGroup>
  83. </Grid.LayoutTransform>
  84. <ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  85. <Path Name="PathArrow" IsHitTestVisible="False" Grid.Column="1" Stretch="Uniform" Fill="{TemplateBinding Foreground}" Data="{StaticResource DownGeometry}" Width="12" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="Center" />
  86. </Grid>
  87. </ToggleButton>
  88. <ContentPresenter Name="ExpandSite" Visibility="Collapsed" Grid.Column="1" />
  89. </Grid>
  90. <ControlTemplate.Triggers>
  91. <Trigger Property="IsExpanded" Value="true">
  92. <Setter Property="hc:BorderElement.CornerRadius" TargetName="ToggleButton" Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='1,0,0,1'}" />
  93. <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" />
  94. <Setter Property="Data" TargetName="PathArrow" Value="{StaticResource UpGeometry}" />
  95. </Trigger>
  96. <Trigger Property="IsEnabled" Value="false">
  97. <Setter Property="Opacity" Value=".4" />
  98. </Trigger>
  99. </ControlTemplate.Triggers>
  100. </ControlTemplate>
  101. <ControlTemplate x:Key="ExpanderDownTemplate" TargetType="Expander">
  102. <Grid>
  103. <Grid.RowDefinitions>
  104. <RowDefinition Height="Auto" />
  105. <RowDefinition />
  106. </Grid.RowDefinitions>
  107. <ToggleButton x:Name="ToggleButton" hc:BorderElement.CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Focusable="False" Padding="10,0,0,0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" MinHeight="{TemplateBinding MinHeight}" Style="{StaticResource ToggleButtonCustom}">
  108. <Grid>
  109. <Grid.ColumnDefinitions>
  110. <ColumnDefinition />
  111. <ColumnDefinition Width="30" />
  112. </Grid.ColumnDefinitions>
  113. <ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  114. <Path Name="PathArrow" IsHitTestVisible="False" Grid.Column="1" Stretch="Uniform" Fill="{TemplateBinding Foreground}" Data="{StaticResource DownGeometry}" Width="12" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="Center" />
  115. </Grid>
  116. </ToggleButton>
  117. <ContentPresenter Name="ExpandSite" Visibility="Collapsed" Grid.Row="1" />
  118. </Grid>
  119. <ControlTemplate.Triggers>
  120. <Trigger Property="IsExpanded" Value="true">
  121. <Setter Property="hc:BorderElement.CornerRadius" TargetName="ToggleButton" Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='1,1,0,0'}" />
  122. <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible" />
  123. <Setter Property="Data" TargetName="PathArrow" Value="{StaticResource UpGeometry}" />
  124. </Trigger>
  125. <Trigger Property="IsEnabled" Value="false">
  126. <Setter Property="Opacity" Value=".4" />
  127. </Trigger>
  128. </ControlTemplate.Triggers>
  129. </ControlTemplate>
  130. <Style x:Key="ExpanderBaseStyle" TargetType="Expander">
  131. <Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}" />
  132. <Setter Property="Background" Value="{DynamicResource SecondaryRegionBrush}" />
  133. <Setter Property="HorizontalContentAlignment" Value="Left" />
  134. <Setter Property="VerticalContentAlignment" Value="Center" />
  135. <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}" />
  136. <Setter Property="BorderThickness" Value="1" />
  137. <Setter Property="MinHeight" Value="{StaticResource DefaultControlHeight}" />
  138. <Setter Property="MinWidth" Value="{StaticResource DefaultControlHeight}" />
  139. <Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
  140. <Setter Property="Template" Value="{StaticResource ExpanderDownTemplate}"/>
  141. <Style.Triggers>
  142. <Trigger Property="ExpandDirection" Value="Left">
  143. <Setter Property="Template" Value="{StaticResource ExpanderLeftTemplate}"/>
  144. </Trigger>
  145. <Trigger Property="ExpandDirection" Value="Up">
  146. <Setter Property="Template" Value="{StaticResource ExpanderUpTemplate}"/>
  147. </Trigger>
  148. <Trigger Property="ExpandDirection" Value="Right">
  149. <Setter Property="Template" Value="{StaticResource ExpanderRightTemplate}"/>
  150. </Trigger>
  151. </Style.Triggers>
  152. </Style>
  153. </ResourceDictionary>