2009-10-01 4 views
1

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

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

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

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

Является ли это ошибка слайдера или что-то еще? Спасибо

ответ

0

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

+0

Хмммы очень интересно, но вы знаете, ползунки пожаров MouseDown но не MouseUp, это причина, я думал, что это может быть ошибкой. Как вы думаете? – mimic

1

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

Есть вероятность, что мероприятие действительно не подключено?

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

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

Версия 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."; 
    } 
Смежные вопросы