WPFSystem.Windows.Controls.Primitives.ToggleButtonを継承したときに、
IsChecked を参照すると、常にFalseが返ってきてしまいます。
継承しない場合は、True, False どちらもうまく取得できます。
継承した場合でも、うまく取れるようにする方法はあるでしょうか?
あるいは、何か勘違いしているんでしょうか?
複雑なので、単純化すると以下のようになります。
今、試しに、新規プロジェクトでMainWindow.xamlで使ったら、問題なく動きますね。
ということは、他の部分に原因があるんでしょうね。
HogeToggleButton を置いているのは、UserControl内なのですが、
そのあたりが原因かも知れません。
<local:HogeToggleButton x:Name="Fuga" Checked="Fuga_Checked" Unchecked="Fuga_Unchecked" > </local:HogeToggleButton>
private void Fuga_Checked(object sender, RoutedEventArgs e) { Debug.Print("Fuga_Checked {0}", Fuga.IsChecked); } private void Fuga_Unchecked(object sender, RoutedEventArgs e) { Debug.Print("Fuga_Unchecked {0}", Fuga.IsChecked); }
class HogeToggleButton : ToggleButton { static HogeToggleButton() { // これを追加するとチェックイベントが発生しない? Type type = typeof(HogeToggleButton); DefaultStyleKeyProperty.OverrideMetadata(type, new FrameworkPropertyMetadata(type)); } }
Fuga_Checked True
Fuga_Unchecked False
Fuga_Checked True
Fuga_Unchecked False
Fuga_Checked True
回答2件
あなたの回答
tips
プレビュー