Боб, Вы можете получить доступ к кнопке переключения из своего класса следующим образом:
ToggleButton myToggleButton = GetTemplateChild ("toggleButton") as ToggleButton;
Создайте события, которые вы хотите в своем классе. Возможно, вам придется переопределить метод OnApplyTemplate и создать там свое событие. Я все еще исследую эту часть и пока не до конца ее понимаю, вам придется поиграть с ней. Я переопределил свой OnApplyTemplate, и он работал для меня.
ToggleButton myToggleButton;
public override void OnApplyTemplate() {
base.OnApplyTemplate();
myToggleButton = GetTemplateChild("toggleButton") as ToggleButton;
myToggleButton.MouseEnter += new MouseEventHandler(myToggleButton_MouseEnter);
}
void myToggleButton_MouseEnter(object sender, MouseEventArgs e) {
VisualStateManager.GoToState(this, "MouseEnter", true);
}
Также убедитесь, что ваш шаблон установлен вверху:
[TemplateVisualState(Name = "MouseEnter", GroupName = "ViewStates")]
VisualState может существовать в файле generic.xaml, в котором вы настраиваете другие ваши визуальные состояния, и не должен находиться во внутренней ToggleButton.
<VisualState x:Name="MouseEnter">
<Storyboard>
<ColorAnimation Storyboard.TargetName="toggleButton" Storyboard.TargetProperty="(ToggleButton.SomeProperty).(SolidColorBrush.Color)" To="SomeColor"/>
</Storyboard>
</VisualState>