WPF - почему не работает EventTrigger? - PullRequest
3 голосов
/ 04 августа 2009

Я пытаюсь запустить один стиль, который выполняет все мои триггеры. Вот что у меня есть, но действие SoundPlayerAction не запускается:

<Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border Name="Border" Padding="2" SnapsToDevicePixels="true">
                        <ContentPresenter />
                    </Border>
                    <ControlTemplate.Triggers>
                        <EventTrigger RoutedEvent="Border.MouseDown">
                            <SoundPlayerAction Source="/sounds/simpleclick.wav"/>
                        </EventTrigger>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>                                
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                        </Trigger>                                   
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 Ответ

17 голосов
/ 04 августа 2009

Я протестировал этот XAML, и единственная проблема в том, что ваш RoutedEvent не запускается. Border.MouseDown определенно не будет работать. Если вы хотите воспроизвести звук, когда выбран элемент (именно это вы пытаетесь сделать), попробуйте событие GotFocus.

Итак, измените EventTrigger на:

<EventTrigger RoutedEvent="ListBoxItem.GotFocus">

Для меня это сработало, и начал играть звук.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...