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

質問編集履歴

2

ソースコード修正

2018/07/20 04:40

投稿

pebble8888
pebble8888

スコア390

title CHANGED
File without changes
body CHANGED
@@ -38,6 +38,9 @@
38
38
  {
39
39
  static HogeToggleButton()
40
40
  {
41
+        // これを追加するとチェックイベントが発生しない?
42
+ Type type = typeof(HogeToggleButton);
43
+ DefaultStyleKeyProperty.OverrideMetadata(type, new FrameworkPropertyMetadata(type));
41
44
  }
42
45
  }
43
46
  ```

1

単純化したコードを追加

2018/07/20 04:40

投稿

pebble8888
pebble8888

スコア390

title CHANGED
File without changes
body CHANGED
@@ -4,4 +4,45 @@
4
4
  継承しない場合は、True, False どちらもうまく取得できます。
5
5
 
6
6
  継承した場合でも、うまく取れるようにする方法はあるでしょうか?
7
- あるいは、何か勘違いしているんでしょうか?
7
+ あるいは、何か勘違いしているんでしょうか?
8
+
9
+ 複雑なので、単純化すると以下のようになります。
10
+ 今、試しに、新規プロジェクトでMainWindow.xamlで使ったら、問題なく動きますね。
11
+ ということは、他の部分に原因があるんでしょうね。
12
+
13
+ HogeToggleButton を置いているのは、UserControl内なのですが、
14
+ そのあたりが原因かも知れません。
15
+
16
+ ```
17
+ <local:HogeToggleButton x:Name="Fuga"
18
+ Checked="Fuga_Checked"
19
+ Unchecked="Fuga_Unchecked"
20
+ >
21
+ </local:HogeToggleButton>
22
+ ```
23
+
24
+ ```
25
+ private void Fuga_Checked(object sender, RoutedEventArgs e)
26
+ {
27
+ Debug.Print("Fuga_Checked {0}", Fuga.IsChecked);
28
+ }
29
+
30
+ private void Fuga_Unchecked(object sender, RoutedEventArgs e)
31
+ {
32
+ Debug.Print("Fuga_Unchecked {0}", Fuga.IsChecked);
33
+ }
34
+ ```
35
+
36
+ ```
37
+ class HogeToggleButton : ToggleButton
38
+ {
39
+ static HogeToggleButton()
40
+ {
41
+ }
42
+ }
43
+ ```
44
+ Fuga_Checked True
45
+ Fuga_Unchecked False
46
+ Fuga_Checked True
47
+ Fuga_Unchecked False
48
+ Fuga_Checked True