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

回答編集履歴

3

nullじゃ駄目でした

2019/10/30 06:48

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -89,4 +89,18 @@
89
89
  > 全ての日の背景を一度ホワイト色でクリアする
90
90
 
91
91
  もコードビハインドでBrushes.Whiteか何かを何かに代入しているのかなと思いますが、
92
- クリアをBrushes.Whiteではなくnullを代入してみるとどうでしょう?
92
+ クリアをBrushes.Whiteではなくnullを代入してみるとどうでしょう?
93
+
94
+ ----
95
+
96
+ 更に追記:
97
+ 最初のラベルのサンプルで試していましたが
98
+
99
+ > MyLabel.Background = Brushes.Red;
100
+
101
+ としたあと、
102
+
103
+ > MyLabel.ClearValue(BackgroundProperty);
104
+
105
+ とすれば、添付プロパティの内容をクリアできるようです。
106
+ nullではなく、こちらを使ってみてください。

2

2

2019/10/30 06:48

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -69,4 +69,24 @@
69
69
 
70
70
  ![イメージ説明](e9b13b65e0313d73134436b607d420c4.gif)
71
71
 
72
- ※自分はあんまりWPFは詳しくないので、もうちょっと上手い方法がありそうです。
72
+ ※自分はあんまりWPFは詳しくないので、もうちょっと上手い方法がありそうです。
73
+
74
+ ----
75
+
76
+ > 日をクリックすると背景をグリーン色にしているのですが、事情により
77
+ 月が変わるたびに全ての日の背景を一度ホワイト色でクリアする必要があります。
78
+ クリアはコードビハインドで行っていますが、そうするとマウスホバー時に上記の
79
+ XAMLで指定したピンク色にはならずホワイト色のままになってしまいます。
80
+ ホワイト色でクリアした後でも個々の日をマウスホバー時にピンク色にすることは
81
+ 可能でしょうか?
82
+
83
+ えーと
84
+
85
+ > 日をクリックすると背景をグリーン色にしている
86
+
87
+ もコードビハインドで、
88
+
89
+ > 全ての日の背景を一度ホワイト色でクリアする
90
+
91
+ もコードビハインドでBrushes.Whiteか何かを何かに代入しているのかなと思いますが、
92
+ クリアをBrushes.Whiteではなくnullを代入してみるとどうでしょう?

1

2019/10/30 04:54

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -10,11 +10,13 @@
10
10
  どういう解決策があるのかはわかりませんが、
11
11
 
12
12
  例えばラベルの背景を変えるのではなくて、
13
- * ボーダーの背景色
13
+ * ラベルの装飾として置いたボーダーの背景色
14
14
  * ラベルとレイヤーを組んだ別のコントロールの背景色
15
15
 
16
- を変えるという手が使えるのかなと思いました。
16
+ コードビハインドで変えるという手が使えるのかなと思いました。
17
17
 
18
+ ただ、これだけだと実行時、マウスオーバーで四角の上に別の四角を描画するという形になり、描画範囲に誤差が出るとゴミが表示される気がするので`UseLayoutRounding="True"`を入れてごまかしてあります。
19
+
18
20
  ```xaml
19
21
  <Window x:Class="WpfApplication1.MainWindow"
20
22
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
@@ -59,7 +61,6 @@
59
61
  public MainWindow()
60
62
  {
61
63
  InitializeComponent();
62
-
63
64
  MyLabelBorder.Background = Brushes.Red;
64
65
  }
65
66
  }