2012-03-12 47 views
6

iv_eは、特定の条件が満たされたときにのみ PreviewMouseLeftButtonDownイベントのイベントハンドラをアタッチする必要があるいくつかのitemscontrolを取得しました。DataTriggerを使用して動的にイベントハンドラを設定する

iv'eがdatatriggerと私のコントロールのスタイルを設計し、私はそれのバインディングをチェックアウトし、ちょうどdatatriggerは を動作することを確認するためにBorderThicknessプロパティの定期的なプロパティのセッターでそれを試してみました。

私は通常のプロパティ設定ツールと同じ方法でイベント設定ツールを使用してデータトリガの条件が満たされたときに、自分のデータトリガを適用してイベントハンドラをアタッチできますか?線に沿って

何か:

'Set property 'System.Windows.EventSetter.Event' threw an exception.' 

内部例外:

 <Style TargetType="{x:Type ItemsControl}">        
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Turn}" Value="True"> 
       <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter> 
      </DataTrigger>        
     </Style.Triggers> 
    </Style> 

このマークアップはeventsetterラインに次の例外がスローされます残念ながら下MSDN docに応じ

 {"Value cannot be null.\r\nParameter name: value"} 
+0

どのラインがその例外をスローしますか?それは ' 'ですか? –

+0

@XiaoChuanYu 私のような 何かだろう、私は実際には依存関係プロパティを登録すると考え –

答えて

11

備考:

Style.SettersはEventSetterオブジェクトのみをサポートすることに注意してください。 (TriggerBaseおよび派生クラス)は、この場合ではないサポートEventSetter

を行うトリガしますが、動的にイベントハンドラを設定するために使用することはできませんので、DataTriggerはTriggerBaseから派生しています。私が今考えることのできる回避策は、値Turnに基づいてスタイルを動的に切り替えることです。

+0

、:、およびセッターでそれをのMouseLeftButtonDown = "True" を使用します 私はセッターでカスタム依存関係プロパティのを使用することができれば、私は、私はちょっとそれはあなたの状況に合った疑い。.. –

+0

を知らないが、あなたはhttp://stackoverflow.com/questions/1138339/can-i-dynamicallyを見てみたいことがあり-switch-between-styles-in-wpf –

+0

これは良いアイデアです。私はすでに持っているスタイルに基づいたスタイルをデザインしています。

関連する問題