검색결과 리스트
Trigger에 해당되는 글 5건
- 2009.02.25 WPF - Trigger(일괄적용)
- 2009.02.25 WPF - Trigger(RadioButton)
- 2009.02.25 WPF - Trigger(Ellipse에서의 DoubleAnimation)
- 2009.02.25 WPF - Trigger(DoubleAnimation)
- 2009.02.25 WPF - Trigger
<!--컨트롤전체에 Trigger일괄적용-->
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="HorizontalAlignment" Value="Center"/><!--적용할속성-->
<Setter Property="FontSize" Value="12"/>
<Style.Triggers>
<!--MouseEnter-->
<EventTrigger RoutedEvent="Button.MouseEnter">
<BeginStoryboard HandoffBehavior="Compose">
<!--HandoffBehavior="Compose" : 다른이벤트에 간섭을 덜 받는다(?)-->
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="FontSize"
To="48"
Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<!--MouseLeave-->
<EventTrigger RoutedEvent="Button.MouseLeave">
<BeginStoryboard HandoffBehavior="Compose">
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="FontSize"
To="12"
Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style></Window.Resources>
<Window x:Class="Day02.Ex21"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Ex21" Height="300" Width="300" Name="window1" Background="White">
<!--<Window>의 이름과 기본배경 설정-->
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<RadioButton Content="Red">
<RadioButton.Triggers>
<EventTrigger RoutedEvent="RadioButton.Checked">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="window1"
Storyboard.TargetProperty="Background.Color"
<!--<window1>의 background를 변경하는게 아니라
<background><solidbrush>를 변경해야하므로-->
To="Red" AutoReverse="True" RepeatBehavior="3x"
Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</RadioButton.Triggers>
</RadioButton>
</StackPanel>
</Window>
<Canvas><Ellipse Width="50" Height="50" Fill="Red" Canvas.Left="0" Canvas.Top="0">
<Ellipse.Triggers><!--click이벤트는 지원x-->
<EventTrigger RoutedEvent="Ellipse.MouseDown">
<BeginStoryboard>
<Storyboard SpeedRatio="1">
<!--SpeedRatio : 애니메이션 진행속도 - "1"이면 1배속-->
<DoubleAnimation
Storyboard.TargetProperty="(Canvas.Left)"
From="0" To="250"
Duration="0:0:3"
AutoReverse="True"
RepeatBehavior="5x"/>
<DoubleAnimation
Storyboard.TargetProperty="(Canvas.Top)"
From="0" To="450"
Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="5x"
AccelerationRatio="1"/>
<!--AccelerationRatio : 0~1(디폴트0) 증가하는 속도(비율) 바닥으로 갈수록 빨라짐(중력이 있는듯)-->
<!--DeccelerationRatio : AccelerationRatio와 반대로 위쪽으로 갈수록 빨라짐(역중력느낌?)-->
</Storyboard>
</BeginStoryboard>
</EventTrigger></Ellipse.Triggers></Ellipse></Canvas>
<EventTrigger RoutedEvent="Button.Click" SourceName="btn1">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="btn1" Storyboard.TargetProperty="FontSize"
<!--Storyboard.TargetName 은 대상이 다를 경우에 사용한다-->
From="12" To="48"
Duration="0:0:1"
FillBehavior="HoldEnd"
<!--FillBehavior = "Stop" : story진행후 제자리로 돌아옴/ HoleEnd : 최종상태 유지(이게 디폴트)-->
IsAdditive="True"
<!--IsAdditive="True" : 이벤트가 누적됨(계속 커짐) (false가 디폴트)-->
AutoReverse="True"
<!--AutoReverse="True" : 상태가 되돌아 갈때(FillBehavior가 Stop 이여야함) 다시 부드럽게 돌아감-->
RepeatBehavior="3x"/>
<!--BeginTime : 이벤트 호출까지의 시간(첫 호출때만 적용)-->
<!--RepeatBehavior="3x" : 작업 반복/ "1.5x"일 경우는 중간에 멈춤/ "Forever"일 경우는 무한반복. -->
<!--RepeatBehavior="0:0:10" 과 같이 시간을 넣어도 작동됨(그 시간만큼 반복)-->
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<Grid>
<Button FontSize="12" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button.Content>Expanding Button</Button.Content>
<Button.Triggers>
<!--EventTrigger : C#의 이벤트와 가장 비슷한 개념-->
<!--RoutedEvent : 이벤트 종류 설정-->
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard><!--애니메이션 사용-->
<Storyboard>
<DoubleAnimation
From="12"
To="72"
Duration="0:0:.5"
Storyboard.TargetProperty="FontSize"/>
<!--수치값변화-->
<!-- 12부터 72까지 0시간0분0.5초동안 FontSize변화-->
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
c#구현
private double init = 12; //멤버변수
private double max = 72;
private Button btn;
public Trigger()
{
InitializeComponent();
btn = new Button();
btn.Content = "Expanding Button";
btn.FontSize = init;
btn.HorizontalAlignment = HorizontalAlignment.Center; //정렬위치
btn.VerticalAlignment = VerticalAlignment.Center;
btn.Click += new RoutedEventHandler(btn_Click);//Click Event
this.Content = btn;//버튼추가
}
void btn_Click(object sender, RoutedEventArgs e)
{
DoubleAnimation da = new DoubleAnimation(); //DoubleAnimation
da.From = init; //시작값
da.To = max; //끝값
da.Duration = new Duration(TimeSpan.FromSeconds(2));//
btn.BeginAnimation(Button.FontSizeProperty, da);//실행
}
RECENT COMMENT