Обработка событий Silverlight - PullRequest
       11

Обработка событий Silverlight

1 голос
/ 01 октября 2009

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

<Slider x:Name="sliderTime" 
        MouseLeftButtonDown="sliderTime_MouseLeftButtonDown" 
        MouseLeftButtonUp="sliderTime_MouseLeftButtonUp" />

И в коде позади:

private void sliderTime_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    //some code
}

Это ошибка слайдера или что-то еще? Спасибо

Ответы [ 3 ]

1 голос
/ 01 октября 2009

Я продублировал код, который вы разместили, и он работал для меня.

Есть ли шанс, что событие на самом деле не подключено?

Я построил его двумя разными способами, и событие для меня состоялось. Как ты это построил?

Также проверьте, есть ли у вас объект, закрывающий ползунок?

Версия 1: Откройте Blend 3, файл> создать проект, приложение Silverlight 3 + веб-сайт. Добавил слайдер и назвал его (просто потому, что вы сделали). Добавлена ​​метка (для проверки срабатывания события).

Выбрал компонент, переключил события и дважды щелкнул события для MouseLeftButtonDown и MouseLeftButtonUp, чтобы создать события и заглушки кода. Обновлена ​​метка при срабатывании MouseLeftButtonUp.

Версия 2: Откройте Blend 3, файл> создать проект, приложение Silverlight 3 + веб-сайт. Добавлен слайдер и ярлык. Щелкните правой кнопкой мыши по проекту silverlight в Blend и открыли его в VS2008. Записал события в разметке с помощью intellisense.

У меня обе версии работали. Это часть другого кода? Если это так, попробуйте сделать версию только с помощью ползунка и посмотрите, работает ли она, если она работает, то что-то в вашем существующем коде может быть отключено. Я опубликую свой код, чтобы вы могли его увидеть.

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"
    x:Class="SilverlightAppSlider2Test.MainPage"
    Width="640" Height="480">

    <Grid x:Name="LayoutRoot" Background="White">
            <Slider x:Name="sliderTime" MouseLeftButtonUp="Slider_MouseLeftButtonUp" MouseLeftButtonDown="sliderTime_MouseLeftButtonDown" Width="Auto" Height="20" Margin="5"/>
            <dataInput:Label x:Name="Label1" Width="200"/>
    </Grid>
</UserControl>

И

    private void Slider_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        // TODO: Add event handler implementation here.
        Label1.Content = "Mouse button left released.";
    }
0 голосов
/ 22 октября 2009

Вы можете использовать метод FrameworkElement.AddHandler для обработки этого события. Однако вы не сможете подключить его в xaml. Больше информации в этом посте:

http://blogs.msdn.com/kmahone/archive/2009/03/19/handling-mouse-input-events-on-controls.aspx

0 голосов
/ 01 октября 2009

Начиная с Silverlight 2 Beta 2, многие элементы управления не запускают события MouseDown / MouseUp, и я считаю, что Slider - один из них. Вы можете «обойти» это, унаследовав от Slider и написав собственный код для запуска этих событий. Посмотрите здесь: http://forums.silverlight.net/forums/p/18328/61917.aspx

...