その4
http://blogs.wankuma.com/kazuki/archive/2007/10/25/104006.aspx
前回は、ButtonのStyleプロパティに見た目とかに関する設定を全部押し込んだ。
これだと、ボタンの個々のプロパティに値を突っ込んでるのと大差ない。
Styleに纏めたものは、Window.ResourcesやApplication.Resourcesに入れる事で効果的に使えるようになる。
ということでWindow.Resourcesに移動させてみた。
Window1.xaml WindowのResourcesプロパティにStyleを移動させてみた版
<Window x:Class="WpfStepByStep.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ControlTemplate" Height="150" Width="150">
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<!-- マウスが上に来た時の色変え -->
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="Blue" />
</Trigger>
<!-- マウスが押下されたときの色変え -->
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
<!-- ボタンのテンプレート -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse Fill="{TemplateBinding Property=Background}"
Stroke="{TemplateBinding Property=Foreground}"/>
<ContentPresenter
HorizontalAlignment="{TemplateBinding Property=HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding Property=VerticalContentAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<!-- フォーカス貰った時の点線も丸く -->
<Setter Property="FocusVisualStyle">
<Setter.Value>
<Style TargetType="{x:Type Control}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Ellipse StrokeDashArray="1 2" Stroke="Red" Margin="3"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid Margin="10">
<Button Content="Hello world" />
</Grid>
</Window>
Window.Resourcesに移動させたことによって、Buttonの部分が非常にすっきりした。
こうすると、Window内のボタン全部が丸くなる!!
いいことだ。
ApplicationのResourcesプロパティに、このStyleを入れるとアプリケーション全体のボタンが丸くなる。
こうやって誰かデザインセンスのある人がデザインしたボタンのスタイルを入れとく事で、格好いいボタンが簡単に量産できるって寸法?