3

SilverlightイベントでMouseLeftButtonDownがButtonとhyperlinkBut​​tonに対して起動されないという問題が発生しました。フレームワークのどこかで処理されているようです。この動作をオーバーライドする方法

以下のXAMLコードでは、[キャンセル]という名前のボタンをクリックしても、Button_MouseLeftButtonDownが起動されません。ボタン内にテキストブロックを配置しようとしましたが、ボタンのテキストをクリックするとMouseLeftButtonDownが機能しますが、フレームにバブルされません。

    <Button Name="Cancel" ClickMode="Release" MouseLeftButtonDown="Button_MouseLeftButtonDown">
            <Button.Content>
                <TextBlock Name="CancelInnerText" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">Clone Page</TextBlock>
            </Button.Content>

4

4 に答える 4

7

ボタンに ClickMode="Hover" を設定する必要がありました。現在、MouseLeftButtonDown イベントが発生し、バブルも発生しています

于 2009-12-09T19:48:46.273 に答える
0

ええ、私はあなたがここで何をしようとしているのか分かりません。これはある種の奇妙な状況ですか、それともクリックしたときにイベントを発生させるボタンを探しているだけですか?

通常のボタンの場合は、通常、次のデフォルトの動作を使用します。

    <Button Name="Cancel" Click="Button_Click">
        <Button.Content>
            <TextBlock>Clone Page</TextBlock>
        </Button.Content>
    </Button>
于 2009-12-09T19:21:21.090 に答える
0

MouseLeftButtonDown イベント (次のように) の AddHandler メソッドを呼び出すと、コードでイベントが発生します。

button1.AddHandler(Button.MouseLeftButtonDownEvent, new  ouseButtonEventHandler(button1_MouseLeftButtonDown), true);

private void button1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
        // your code
}
于 2013-10-28T05:33:49.970 に答える
0

あなたは本気ではない!ユーザーが大きなフォームでキャンセル ボタンを押すとどうなりますか? キャンセルボタンに接続されているものを発射するだけですか??

魔法は、コントロールから来るフォーカスメカニズムと関係があります。すべてのイベントをフォーカスされた要素 (フレームワークの深い静的クラス内) にリダイレクトします。そして ではmousebuttondown、このフォーカスはbase.Focus();を介して設定されます。

MouseLeftButtonDownだから:フォーカスをオーバーライドして設定するだけで、すべて正常に動作します。

ボタン (またはボタン テンプレート) 内に配置できるコントロールの例:

public class InAction : ContentControl
{
    public InAction()
    {
        this.DefaultStyleKey = typeof(InAction);
        this.MouseLeftButtonDown += new MouseButtonEventHandler(InAction_MouseLeftButtonDown);
    }

    void InAction_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        base.Focus();   
    }
}
于 2011-04-14T03:36:03.827 に答える