2012-03-06 9 views
0

2つのテキストボックスを持つフォームがあります。レイアウトをクリックすると、どのイベントを使用してアクションを取得できますか?テキストボックス?テキストボックスをクリックすると、このイベントは機能しません。レイアウトの他の部分をクリックすると、フォーム上にあるテキストボックスが表示されます。SilverLightまたはWindows Phoneでレイアウト用のイベントを作成するにはどうすればいいですか

答えて

2

あなたがのMouseLeftButtonUpを設定することができますしてテキストボックスをクリックしても-eventは、あなたのページ内のメイングリッドにあります。このような何か:

<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp"> 

そして、イベントは次のようになります。

private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) 
{ 
    //Do something 
} 

私は2つのTextBoxとチェックボックスでページ上でこれをテストし、これが動作します。テキストボックスとCheckBoxを除いてどこでもクリックして、イベントが発生します。お役に立てれば!

2

私はこのようなことをしました。私の背後にあるコードでは、これを使用:

layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) => 
       { 
        //In this case, don't focus. 
        if (RecieveFocus != null && 
         e.OriginalSource is Textbox && 
         ((e.OriginalSource as Textbox).Tag == "DONT FOCUS") 
        { 
         //do nothing, or whatever you want 
        } 
        else if(RecieveFocus != null) 
         RecieveFocus(this, new EventArgs());        
       }), true); 

あなたは、あなたのオリジナルのソースがテキストボックスであるかどうかを確認することができ、そしてその場合は、あなたがそうでなければ行いたいものは何でもありません。 Add Handlerの最後のブール値は、すでに処理済みであるとマークされたイベントを処理すると言うことです。

は私が扱うと上げることRecieveFocusというイベントを行っているものは、(この場合)を除いて、私のレイアウトルートにタグ「DONT FOCUS」