Mam dziwny problem.
Robię swoją wersję template dla buttona z książki. Oczywiście w książce wszystko działa tylko u mnie nie. Nie rozumiem czemu nie wyświetla się content z przycisku., próbowałem dodać tam rectangle lub zwykły tekst, nie działa. A moim zdaniem wszystko jest w porządku.
Moja wersja:
<Grid x:Name="LayoutRoot" Margin="216,141,230,191.5">
<Grid.Resources>
<ControlTemplate x:Key="ButtonTemplate">
<Viewbox Stretch="Fill">
<Grid Height="100" Width="152">
<Rectangle x:Name="Background" Fill="{TemplateBinding Background}" RadiusX="20" RadiusY="10"/>
<Rectangle x:Name="CentralBrightening" Opacity="0.2" RadiusX="20" RadiusY="10">
<Rectangle.Fill>
<RadialGradientBrush>
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="White"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Path x:Name="GlassLayer" Opacity="0.75" Data="M3.1660008,12.000478 C3.1660008,6.4776303 8.954305,0 20,0 L124.667,0 C135.71269,0 138.99973,4.8109417 138.99973,10.333789 L139.08373,34.749806 C123.75039,60.750729 111.82964,30.479422 92.999918,31.666727 L52.333138,32.333391 C31.329494,29.979393 19.833005,60.248672 3.3330017,35.249803 z" Margin="5">
<Path.Fill>
<LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1">
<GradientStop Offset="0" Color="#00FFFFFF"/>
<GradientStop Offset="1" Color="#F2FFFFFF"/>
</LinearGradientBrush>
</Path.Fill>
</Path>
<Rectangle x:Name="FlashLayer" Fill="{TemplateBinding BorderBrush}" Margin="3" RadiusX="20" RadiusY="10">
<Rectangle.OpacityMask>
<RadialGradientBrush Center="0.511,1" GradientOrigin="0.5, 1"
RadiusY="0.362">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Offset="1"/>
</RadialGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
<Rectangle x:Name="FlashWhite" Margin="3" RadiusX="20" RadiusY="10">
<Rectangle.Fill>
<RadialGradientBrush GradientOrigin="0.5,0.95" Center="0.5,0.95">
<GradientStop Offset="1"/>
<GradientStop Color="White"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="{TemplateBinding Padding}"/>
</Grid>
</Viewbox>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsPressed" Value="true">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="0.95" ScaleY="0.95"/>
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Grid.Resources>
<Button Template="{StaticResource ButtonTemplate}" Background="#FF195083" Foreground="Black" BorderBrush="#FF36EDE9" Width="100" Height="100">
<Rectangle Fill="White" Height="25" Width="25"/>
</Button>
</Grid>
Wersja książkowa:
<Grid>
<Grid.Resources>
<ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
<Viewbox Stretch="Fill">
<Grid Height="100" Width="100">
<Ellipse x:Name="Background" Fill="{TemplateBinding Background}">
<Ellipse.Effect>
<DropShadowEffect x:Name="SHEffect" Opacity="0" BlurRadius="20" Color="{Binding BorderBrush.Color, RelativeSource={RelativeSource Mode=TemplatedParent}}" ShadowDepth="0"/>
</Ellipse.Effect>
</Ellipse>
<Ellipse x:Name="CentralBrightening" Opacity="0.2">
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="White"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Path x:Name="GlassLayer" Data="M90,45 C90,69.852814 69.852814,40 45,40 20.147186,40 0,69.852814 0,45 0,20.147186 20.147186,0 45,0 69.852814,0 90,20.147186 90,45 z" Margin="5,5,5,40.117" Stretch="Fill">
<Path.Fill>
<RadialGradientBrush Center="0.5,0.842" GradientOrigin="0.5,0.842" RadiusY="0.828">
<GradientStop Offset="0" Color="#00FFFFFF" />
<GradientStop Offset="1" Color="#F2FFFFFF"/>
</RadialGradientBrush>
</Path.Fill>
</Path>
<Ellipse x:Name="FlashLayer" Fill="{TemplateBinding BorderBrush}" Margin="3">
<Ellipse.OpacityMask>
<RadialGradientBrush Center="0.511,0.97" GradientOrigin="0.511,0.97" RadiusY="0.362">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Offset="1"/>
</RadialGradientBrush>
</Ellipse.OpacityMask>
</Ellipse>
<Ellipse x:Name="FlashWhite" Margin="3">
<Ellipse.Fill>
<RadialGradientBrush Center="0.533,0.949" GradientOrigin="0.533,0.949" RadiusY="0.287" RadiusX="0.415">
<GradientStop Offset="1"/>
<GradientStop Color="White"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="{TemplateBinding Padding}" />
</Grid>
</Viewbox>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.25" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SHEffect"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.25" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SHEffect"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
<Trigger Property="ButtonBase.IsPressed" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="0.95" ScaleY="0.95"/>
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Grid.Resources>
<Button Foreground="Black" Template="{StaticResource ButtonTemplate}" BorderBrush="#FF36EDE9" Background="#FF195083" Width="100" Height="100" >
<Rectangle Fill="White" Height="25" Width="25"/>
</Button>
</Grid>
Edit: Ok, już nieważne trzeba TargetType podać :P