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

質問編集履歴

2

期待通りの動作をするコードビハインドを追記しました。

2019/10/30 07:21

投稿

bep
bep

スコア6

title CHANGED
File without changes
body CHANGED
@@ -75,4 +75,24 @@
75
75
  クリアはコードビハインドで行っていますが、そうするとマウスホバー時に上記の
76
76
  XAMLで指定したピンク色にはならずホワイト色のままになってしまいます。
77
77
  ホワイト色でクリアした後でも個々の日をマウスホバー時にピンク色にすることは
78
- 可能でしょうか?
78
+ 可能でしょうか?
79
+
80
+ 上手く動作したCalendarDayButtonの背景をクリアするコードは以下の通りです。
81
+ ```C#
82
+ void AllDaysClear(CalendarDayButton[] days)
83
+ {
84
+ foreach (var day in days)
85
+ {
86
+ var border = day.Children<Border>().FirstOrDefault();
87
+ if (border != null)
88
+ {
89
+ border.BorderBrush = Brushes.Black;
90
+ //border.Background = Brushes.White; //期待通りの動作をしない
91
+ border.ClearValue(BackgroundProperty); //期待通りの動作をする
92
+ day.IsEnabled = true;
93
+ }
94
+ }
95
+ }
96
+ ```
97
+ Childrenメソッドは「じんぐる様」の下記サイトのコードを拝借し検証しました。
98
+ https://blog.xin9le.net/entry/2013/10/29/222336

1

Calendarコントロールの個々の日で同様の動作を実現したいです。

2019/10/30 07:21

投稿

bep
bep

スコア6

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,41 @@
38
38
  このようにするとマウスホバー時のBackgroundがWhiteになってしまいます。
39
39
  望む動作はStyleで定義した通りのYellowになって欲しいのですが方法がわかりません。
40
40
 
41
- 何か良い方法がありましたらご教示ください。
41
+ 何か良い方法がありましたらご教示ください。
42
+
43
+ 実際に実現したいことはLabelコントロールではなくCalendarコントロールです。
44
+ 改めてXAMLの抜粋を記載致します。複雑になるため動作に関係のないイベントハンドラ
45
+ は省略しております。
46
+ ```XAML
47
+ <Viewbox>
48
+ <Calendar x:Name="MyCalendar">
49
+ <Calendar.CalendarDayButtonStyle>
50
+ <Style TargetType="{x:Type CalendarDayButton}">
51
+ <Setter Property="Template">
52
+ <Setter.Value>
53
+ <ControlTemplate TargetType="{x:Type CalendarDayButton}">
54
+ <Border x:Name="MyHoverButtonBorder" BorderThickness="0.1">
55
+ <ContentPresenter/>
56
+ </Border>
57
+ <ControlTemplate.Triggers>
58
+ <!-- マウスオーバー -->
59
+ <Trigger Property="IsMouseOver" Value="True">
60
+ <Setter TargetName="MyHoverButtonBorder" Property="BorderBrush" Value="Pink" />
61
+ <Setter TargetName="MyHoverButtonBorder" Property="Background" Value="Pink" />
62
+ <Setter Property="Foreground" Value="White" />
63
+ </Trigger>
64
+ </ControlTemplate.Triggers>
65
+ </ControlTemplate>
66
+ </Setter.Value>
67
+ </Setter>
68
+ </Style>
69
+ </Calendar.CalendarDayButtonStyle>
70
+ </Calendar>
71
+ </Viewbox>
72
+ ```
73
+ 日をクリックすると背景をグリーン色にしているのですが、事情により
74
+ 月が変わるたびに全ての日の背景を一度ホワイト色でクリアする必要があります。
75
+ クリアはコードビハインドで行っていますが、そうするとマウスホバー時に上記の
76
+ XAMLで指定したピンク色にはならずホワイト色のままになってしまいます。
77
+ ホワイト色でクリアした後でも個々の日をマウスホバー時にピンク色にすることは
78
+ 可能でしょうか?