質問するログイン新規登録

回答編集履歴

2

見直しキャンペーン中

2023/07/23 08:16

投稿

TN8001
TN8001

スコア10180

answer CHANGED
@@ -1,85 +1,85 @@
1
- `Storyboard`には`Completed`イベントがあります。
2
- [Storyboard クラス (System.Windows.Media.Animation) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.animation.storyboard#events)
3
-
4
- ```C#
5
- private void Click_Greeting(object sender, RoutedEventArgs e)
6
- {
7
- ph.ChangePhrase();
8
-
9
- Storyboard sb;
10
- switch(ph.Now)
11
- {
12
- case Period.MORNING:
13
- sb = FindResource("MorningAnimation") as Storyboard;
14
- break;
15
- case Period.EVENING:
16
- sb = FindResource("EveningAnimation") as Storyboard;
17
- break;
18
- default:
19
- sb = FindResource("NightAnimation") as Storyboard;
20
- break;
21
- }
22
-
23
- sb.Completed += Completed;
24
- BeginStoryboard(sb);
25
-
26
- void Completed(object _, EventArgs __)
27
- {
28
- sb.Completed -= Completed;
29
- ph.ChangePhraseAfterAnimation();
30
- }
31
- }
32
- ```
33
-
34
- `Storyboard`に組み込めるようなものなら、入れてしまってもよさそうですが。
35
-
36
- ---
37
-
38
- もちろんxamlでイベントつけてもいいですよ。
39
- ```xaml
40
- <Storyboard x:Key="MorningAnimation" Completed="Storyboard_Completed">
41
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
42
- <EasingColorKeyFrame KeyTime="0:0:1" Value="#FFFFA400" />
43
- </ColorAnimationUsingKeyFrames>
44
- </Storyboard>
45
- <Storyboard x:Key="EveningAnimation" Completed="Storyboard_Completed">
46
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
47
- <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF0388FF" />
48
- </ColorAnimationUsingKeyFrames>
49
- </Storyboard>
50
- <Storyboard x:Key="NightAnimation" Completed="Storyboard_Completed">
51
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
52
- <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF02067A" />
53
- </ColorAnimationUsingKeyFrames>
54
- </Storyboard>
55
- ```
56
-
57
- ```C#
58
- private void Click_Greeting(object sender, RoutedEventArgs e)
59
- {
60
- ph.ChangePhrase();
61
-
62
- switch(ph.Now)
63
- {
64
- case Period.MORNING:
65
- var sb = FindResource("MorningAnimation") as Storyboard;
66
- BeginStoryboard(sb);
67
- break;
68
-
69
- case Period.EVENING:
70
- sb = FindResource("EveningAnimation") as Storyboard;
71
- BeginStoryboard(sb);
72
- break;
73
-
74
- case Period.NIGHT:
75
- sb = FindResource("NightAnimation") as Storyboard;
76
- BeginStoryboard(sb);
77
- break;
78
- }
79
- }
80
-
81
- private void Storyboard_Completed(object sender, EventArgs e)
82
- {
83
- ph.ChangePhraseAfterAnimation();
84
- }
1
+ `Storyboard`には`Completed`イベントがあります。
2
+ [Storyboard クラス (System.Windows.Media.Animation) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.animation.storyboard#events)
3
+
4
+ ```cs
5
+ private void Click_Greeting(object sender, RoutedEventArgs e)
6
+ {
7
+ ph.ChangePhrase();
8
+
9
+ Storyboard sb;
10
+ switch(ph.Now)
11
+ {
12
+ case Period.MORNING:
13
+ sb = FindResource("MorningAnimation") as Storyboard;
14
+ break;
15
+ case Period.EVENING:
16
+ sb = FindResource("EveningAnimation") as Storyboard;
17
+ break;
18
+ default:
19
+ sb = FindResource("NightAnimation") as Storyboard;
20
+ break;
21
+ }
22
+
23
+ sb.Completed += Completed;
24
+ BeginStoryboard(sb);
25
+
26
+ void Completed(object _, EventArgs __)
27
+ {
28
+ sb.Completed -= Completed;
29
+ ph.ChangePhraseAfterAnimation();
30
+ }
31
+ }
32
+ ```
33
+
34
+ `Storyboard`に組み込めるようなものなら、入れてしまってもよさそうですが。
35
+
36
+ ---
37
+
38
+ もちろんxamlでイベントつけてもいいですよ。
39
+ ```xml
40
+ <Storyboard x:Key="MorningAnimation" Completed="Storyboard_Completed">
41
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
42
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FFFFA400" />
43
+ </ColorAnimationUsingKeyFrames>
44
+ </Storyboard>
45
+ <Storyboard x:Key="EveningAnimation" Completed="Storyboard_Completed">
46
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
47
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF0388FF" />
48
+ </ColorAnimationUsingKeyFrames>
49
+ </Storyboard>
50
+ <Storyboard x:Key="NightAnimation" Completed="Storyboard_Completed">
51
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
52
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF02067A" />
53
+ </ColorAnimationUsingKeyFrames>
54
+ </Storyboard>
55
+ ```
56
+
57
+ ```cs
58
+ private void Click_Greeting(object sender, RoutedEventArgs e)
59
+ {
60
+ ph.ChangePhrase();
61
+
62
+ switch(ph.Now)
63
+ {
64
+ case Period.MORNING:
65
+ var sb = FindResource("MorningAnimation") as Storyboard;
66
+ BeginStoryboard(sb);
67
+ break;
68
+
69
+ case Period.EVENING:
70
+ sb = FindResource("EveningAnimation") as Storyboard;
71
+ BeginStoryboard(sb);
72
+ break;
73
+
74
+ case Period.NIGHT:
75
+ sb = FindResource("NightAnimation") as Storyboard;
76
+ BeginStoryboard(sb);
77
+ break;
78
+ }
79
+ }
80
+
81
+ private void Storyboard_Completed(object sender, EventArgs e)
82
+ {
83
+ ph.ChangePhraseAfterAnimation();
84
+ }
85
85
  ```

1

追記

2020/10/23 08:46

投稿

TN8001
TN8001

スコア10180

answer CHANGED
@@ -1,4 +1,6 @@
1
1
  `Storyboard`には`Completed`イベントがあります。
2
+ [Storyboard クラス (System.Windows.Media.Animation) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.animation.storyboard#events)
3
+
2
4
  ```C#
3
5
  private void Click_Greeting(object sender, RoutedEventArgs e)
4
6
  {
@@ -29,4 +31,55 @@
29
31
  }
30
32
  ```
31
33
 
32
- `Storyboard`に組み込めるようなものなら、入れてしまってもよさそうですが。
34
+ `Storyboard`に組み込めるようなものなら、入れてしまってもよさそうですが。
35
+
36
+ ---
37
+
38
+ もちろんxamlでイベントつけてもいいですよ。
39
+ ```xaml
40
+ <Storyboard x:Key="MorningAnimation" Completed="Storyboard_Completed">
41
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
42
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FFFFA400" />
43
+ </ColorAnimationUsingKeyFrames>
44
+ </Storyboard>
45
+ <Storyboard x:Key="EveningAnimation" Completed="Storyboard_Completed">
46
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
47
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF0388FF" />
48
+ </ColorAnimationUsingKeyFrames>
49
+ </Storyboard>
50
+ <Storyboard x:Key="NightAnimation" Completed="Storyboard_Completed">
51
+ <ColorAnimationUsingKeyFrames Storyboard.TargetName="window" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
52
+ <EasingColorKeyFrame KeyTime="0:0:1" Value="#FF02067A" />
53
+ </ColorAnimationUsingKeyFrames>
54
+ </Storyboard>
55
+ ```
56
+
57
+ ```C#
58
+ private void Click_Greeting(object sender, RoutedEventArgs e)
59
+ {
60
+ ph.ChangePhrase();
61
+
62
+ switch(ph.Now)
63
+ {
64
+ case Period.MORNING:
65
+ var sb = FindResource("MorningAnimation") as Storyboard;
66
+ BeginStoryboard(sb);
67
+ break;
68
+
69
+ case Period.EVENING:
70
+ sb = FindResource("EveningAnimation") as Storyboard;
71
+ BeginStoryboard(sb);
72
+ break;
73
+
74
+ case Period.NIGHT:
75
+ sb = FindResource("NightAnimation") as Storyboard;
76
+ BeginStoryboard(sb);
77
+ break;
78
+ }
79
+ }
80
+
81
+ private void Storyboard_Completed(object sender, EventArgs e)
82
+ {
83
+ ph.ChangePhraseAfterAnimation();
84
+ }
85
+ ```