質問編集履歴

2

文章修正

2020/10/20 06:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -256,7 +256,11 @@
256
256
 
257
257
 
258
258
 
259
- ###やりたかった実装(質問解決済)
259
+ ###やりたかった実装
260
+
261
+ 疑問が解決したのでやりたかった実装を以下に載せておきます。
262
+
263
+
260
264
 
261
265
  ```C#
262
266
 

1

疑問が解決したためやりたかった実装のコードを追記

2020/10/20 06:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -251,3 +251,193 @@
251
251
  (文字のズレはごめんなさい)
252
252
 
253
253
  ![イメージ説明](dee00015316bf169abf71b6684bbe2ce.png)
254
+
255
+
256
+
257
+
258
+
259
+ ###やりたかった実装(質問解決済)
260
+
261
+ ```C#
262
+
263
+ using System.ComponentModel;
264
+
265
+ using System.Windows;
266
+
267
+ using System.Windows.Media.Animation;
268
+
269
+
270
+
271
+ namespace Questions298961
272
+
273
+ {
274
+
275
+ public enum Period { MORNING, EVENING, NIGHT };
276
+
277
+
278
+
279
+ public partial class MainWindow : Window
280
+
281
+ {
282
+
283
+ private readonly GreetingPhrase ph = new GreetingPhrase();
284
+
285
+
286
+
287
+ public MainWindow()
288
+
289
+ {
290
+
291
+ InitializeComponent();
292
+
293
+ DataContext = ph;
294
+
295
+ }
296
+
297
+
298
+
299
+ private void Click_Morning(object sender, RoutedEventArgs e) => ph.Now = Period.MORNING;
300
+
301
+
302
+
303
+ private void Click_Evening(object sender, RoutedEventArgs e) => ph.Now = Period.EVENING;
304
+
305
+
306
+
307
+ private void Click_Night(object sender, RoutedEventArgs e) => ph.Now = Period.NIGHT;
308
+
309
+
310
+
311
+ private void Click_Greeting(object sender, RoutedEventArgs e)
312
+
313
+ {
314
+
315
+ ph.ChangePhrase();
316
+
317
+
318
+
319
+ //ここにアニメーション用の条件分岐を入れました。
320
+
321
+ switch (ph.Now)
322
+
323
+ {
324
+
325
+ case Period.MORNING:
326
+
327
+ var sb = FindResource("MorningAnimation") as Storyboard;
328
+
329
+ BeginStoryboard(sb);
330
+
331
+ break;
332
+
333
+
334
+
335
+ case Period.EVENING:
336
+
337
+ sb = FindResource("EveningAnimation") as Storyboard;
338
+
339
+ BeginStoryboard(sb);
340
+
341
+ break;
342
+
343
+
344
+
345
+ case Period.NIGHT:
346
+
347
+ sb = FindResource("NightAnimation") as Storyboard;
348
+
349
+ BeginStoryboard(sb);
350
+
351
+ break;
352
+
353
+ }
354
+
355
+
356
+
357
+ }
358
+
359
+ }
360
+
361
+
362
+
363
+ public class GreetingPhrase : INotifyPropertyChanged
364
+
365
+ {
366
+
367
+ public string Phrase { get; set; }
368
+
369
+
370
+
371
+ private Period _Now;
372
+
373
+ public Period Now
374
+
375
+ {
376
+
377
+ get => _Now;
378
+
379
+ set
380
+
381
+ {
382
+
383
+ _Now = value;
384
+
385
+ RaiseProeprtyChanged(nameof(Now));
386
+
387
+ }
388
+
389
+ }
390
+
391
+
392
+
393
+ public void ChangePhrase()
394
+
395
+ {
396
+
397
+ switch (Now)
398
+
399
+ {
400
+
401
+ case Period.MORNING:
402
+
403
+ Phrase = "おはよう!";
404
+
405
+ break;
406
+
407
+ case Period.EVENING:
408
+
409
+ Phrase = "こんにちは!";
410
+
411
+ break;
412
+
413
+ case Period.NIGHT:
414
+
415
+ Phrase = "こんばんは!";
416
+
417
+ break;
418
+
419
+ }
420
+
421
+ RaiseProeprtyChanged(nameof(Phrase));
422
+
423
+ }
424
+
425
+
426
+
427
+ #region INotifyPropertyChanged の実装
428
+
429
+ public event PropertyChangedEventHandler PropertyChanged;
430
+
431
+ private void RaiseProeprtyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
432
+
433
+ #endregion
434
+
435
+ }
436
+
437
+ }
438
+
439
+ ```
440
+
441
+
442
+
443
+ xamlの方はTN8001さんの書いてくださったものをそのまま使えると思うので割愛します。