1

スライダーから MouseUp イベントをキャッチしようとしましたが、ハンドラー内には入りません。コードは通常です:

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

そしてコードビハインドで:

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

スライダーのバグか何か?ありがとう

4

3 に答える 3

1

あなたが投稿したコードを複製したところ、うまくいきました。

イベントが実際に配線されていない可能性はありますか?

2 つの異なる方法でビルドしたところ、イベントが発生しました。どのように構築しましたか?

また、何らかの形でスライダーを覆っているオブジェクトがあるかどうかも確認してください。

バージョン 1: Blend 3 を開き、ファイル > プロジェクトの作成、Silverlight 3 アプリケーション + Web サイト。スライダーを追加して名前を付けました (単にあなたがしたからです)。ラベルを追加しました (イベントの発火を確認するため)。

コンポーネントを選択し、イベントを切り替え、MouseLeftButtonDown と MouseLeftButtonUp のイベントをダブルクリックして、イベントとコード ビハインド スタブを作成しました。MouseLeftButtonUp が発火したときのラベルを更新しました。

バージョン 2: Blend 3 を開き、ファイル > プロジェクトの作成、Silverlight 3 アプリケーション + Web サイト。スライダーとラベルを追加しました。Blend で Silverlight プロジェクトを右クリックし、VS2008 で開きました。インテリセンスを使用して、マークアップでイベントを結び付けました。

どちらのバージョンも私にとってはうまくいきました。これは他のコードの一部ですか?その場合は、スライダーだけのバージョンを作成して、それが機能するかどうかを確認してください。機能する場合は、既存のコードの何かがオフになっている可能性があります。あなたがそれを見ることができるように、私は私のコードを投稿します。

<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.";
    }
于 2009-10-01T07:34:48.300 に答える
0

このイベントを処理するには、FrameworkElement.AddHandler メソッドを使用できます。ただし、xaml で接続することはできません。このブログ投稿の詳細:

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

于 2009-10-22T19:31:24.013 に答える
0

Silverlight 2 Beta 2 以降、多くのコントロールで MouseDown/MouseUp イベントが発生しなくなりました。Slider もその 1 つだと思います。Slider から継承し、カスタム コードを記述してこれらのイベントを発生させることで、「回避」できます。こちらをご覧ください: http://forums.silverlight.net/forums/p/18328/61917.aspx

于 2009-10-01T07:00:28.917 に答える