RoutedEventConverter не может обработать событие Checked

103
09 февраля 2022, 23:50

Есть такой шаблон для checkBox

  <ControlTemplate x:Key="CustomCheckBox" TargetType="CheckBox">
            <StackPanel Orientation="Horizontal" Margin="11, 0, 0, 0">                
                <Canvas VerticalAlignment="Center" Width="30" Height="19" Margin="{TemplateBinding Padding}">
                    <Ellipse x:Name="CheckBoxBackCircle" Width="50" Height="50" Fill="#F8F8FA" Opacity="0">
                        <Ellipse.RenderTransform>
                            <TranslateTransform X="-15" Y="-15"/>
                        </Ellipse.RenderTransform>
                    </Ellipse>
                    <Path x:Name="CheckBoxSquare" Data="M.5,12.5 l0,4 q0,2 2,2 l15,0 q1,0 1,-2 l0,-14 q0,-2 -2,-2 l-15,0 q-1,0 -1,2 l0,10" Stroke="#D6D9DF" StrokeThickness="1.4" StrokeDashArray="69.5" Fill="White" Stretch="Fill" Width="20" Height="20"/>
                    <Path x:Name="CheckBoxCheck" Data="M.5,12.5 l7,6 l11,-15" Stroke="#D6D9DF" StrokeThickness="1.4" StrokeDashArray="28" StrokeDashOffset="28" />
                </Canvas>
                <ContentControl VerticalAlignment="Center" Content="{TemplateBinding Content}"></ContentControl>
            </StackPanel>
        <ControlTemplate.Triggers>
            <EventTrigger RoutedEvent="MouseEnter">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxBackCircle" TargetProperty="Opacity">
                            <DoubleAnimation To="1" Duration="0:0:0:0.2" FillBehavior="HoldEnd"></DoubleAnimation>                                
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxSquare" TargetProperty="Stroke.Color">
                            <ColorAnimation To="#6FA2F6" Duration="0:0:0:0.2" FillBehavior="HoldEnd"></ColorAnimation>                                
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="MouseLeave">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxBackCircle" TargetProperty="Opacity">
                            <DoubleAnimation To="0" Duration="0:0:0:0.2" FillBehavior="HoldEnd"></DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxSquare" TargetProperty="Stroke.Color">
                            <ColorAnimation To="#D6D9DF" Duration="0:0:0:0.2" FillBehavior="HoldEnd"></ColorAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Checked">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxSquare" TargetProperty="StrokeDashOffset">
                            <DoubleAnimation To="-69.5" Duration="0:0:0:1" FillBehavior="HoldEnd"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

Проблема заключается в этом триггере

            <EventTrigger RoutedEvent="Checked">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard TargetName="CheckBoxSquare" TargetProperty="StrokeDashOffset">
                            <DoubleAnimation To="-69.5" Duration="0:0:0:1" FillBehavior="HoldEnd"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>

Вот CheckBox с эти шаблоном

<CheckBox Template="{StaticResource CustomCheckBox}" FontSize="17" HorizontalAlignment="Center"></CheckBox>

Ошибка:

Если задать другое значение для атрибута RoutedEvent, например MouseMove, то всё заработает (но кажется это работает далеко не со всеми Event'ами, т.к. для Click и Unchecked выскакивает та же ошибка).

Помогите, пожалуйста!

Answer 1
<EventTrigger RoutedEvent="CheckBox.Click">
    <EventTrigger.Actions>
        <BeginStoryboard>
            <Storyboard TargetName="CheckBoxSquare" TargetProperty="StrokeDashOffset">
                <DoubleAnimation To="-69.5" Duration="0:0:0:1" FillBehavior="HoldEnd"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger.Actions>
</EventTrigger>

Нужно прописать CheckBox.Click и должно заработать. Проверил. Так же можно и CheckBox.Checked

READ ALSO
Вызов вложенных async методов

Вызов вложенных async методов

Внутри GetCacheItemAsync используется 'copy-past' реализация SemaphorSlim, _useCount которого будет равен 1 если метод SetSomething вызывать два раза, ибо _fieldValue уже проинициализированоТ

88
HTML CSS Установить размер внутреннего div в зависимости от размера внешнего

HTML CSS Установить размер внутреннего div в зависимости от размера внешнего

У меня есть div, внутри которого три div'a установленных вертикальноИ я хочу к примеру сделать первый блок 25% от ширины внешнего div, второй 25% и третий...

99
Почему модальное окно прижимает или фиксирует к верху

Почему модальное окно прижимает или фиксирует к верху

У меня на сайте модальные окнаА так же в них есть по всплывающему окну с формой

85
Переменные в css, как считать calc

Переменные в css, как считать calc

Я хочу, используя переменную var(--a) посчитать значение var(--b) Я хочу из 4 rem, которые в переменной var(--a) получить -47rem в переменной var(--b), но css что-то...

82