2011-07-04 13 views
0

通常のバージョンのSilverlightでは、EventManagerによってイベントハンドラを登録することでイベントハンドラを作成できます。 Windows Phone 7にはそのクラスがありません。 私の質問は、イベントを作成する方法です。イベントは親パネルによって処理されます。WP7カスタムコントロールのRoutedEvent

私のシナリオ:私はそれにテキストボックスを含むカスタムクラスを作成しました。 Foreach私はカスタムブロックを追加しました。これは、テキストブロックがクリックされたときに発生します。動作は次のようになります:「カスタムコントロール内のこのテキストブロックをクリックすると、私のカスタムargを使ってカスタムイベントを発生させてください(カスタムコントロールに渡す(たとえば、どのVisualStateを変更するかを指定するなど))」

あなたは私の問題をどのように扱うか私を助けることはできますか?

答えて

0

あなたがやろうとしているかのサンプルコードを提供してもらえますか?あなたがのTextBlockがクリックされたときのイベントを作成したいようだ。

をイベントを追加テキストブロックへのハンドラ:

public Event EventHandler<RoutedEventsArgs> TextClicked; 

// Fire the event 
private void OnTextClicked(object sender, RoutedEventArgs e) 
{ 
    if (TextClicked != null) 
    { 
     TextClicked(sender, e); 
    } 
} 

TextBlock.Click =+ OnTextBlockClicked; 

private void OnTextBlockClicked(object sender, RoutedEventArgs e) 
{ 
    // Raise event 
    OnTextClicked(sender, e); 
} 

私はそれらの行に沿って何かを考えます。

+0

ありがとうございます。貼り付けたコードをビヘイビアで記述し、カスタムコントロールのテキストボックスに貼り付けることができます(Texblock.ClickはAssosiatedObject.Clickに変更されます)。今度は、クリックイベントをこのテキストブロックを含むコンテナで処理します。親コントロールのVisualStateNameでビヘイビアパラメータを指定します。テキストブロックがクリックされた場合、テンプレート化された親はそれに応答し、ビジュアル状態を1に変更します。そのイベントは引数(args)で送信されます。 – justPatrick

関連する問題