2016-07-13 16 views
0

私は遅延ロードツリービューを実装しており、Expandedイベントを処理する必要があります。私はそれをViewModelで直接やりたいと思います。私は、EventTriggerをフックアップしている:ない予想通り、これは動作しますが、OriginalSourceはツリービューアイテムですMVVM wpf TreeViewの処理方法拡張イベント

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Expanded"> 
     <interactivity:InvokeCommandAction Command="{Binding HandleExpandCmd}" TriggerParameterPath="OriginalSource" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

、と私はに好む私のViewModelでSystem.Windows.Controlsが含まれます。
また、コードビハインドでイベントを処理し、TreeViewItemのDataContextをViewModelに渡すこともできます。 (もちろん、DataContextはViewModelと連携する必要があります)
TVIのDataContextではなく、DataContextを渡すTriggerParameterPathで使用できる構文はありますか?
おかげ---

+0

を使用でき、<対話:InvokeCommandActionコマンド= "{HandleExpandCmdバインディング}" CommandParameter = "{バインディング}" /> –

+0

@Ayyappanサブラマニアン - おかげで、それはツリービューのためのViewModelを取得し、ありませんTVIにバインドされた項目のViewModel – Number8

答えて

0

私はあなたのViewModelに1にTreeViewItemIsExpandedプロパティをバインドすることをお勧め。次に、ViewModelでそれを処理できます。

Here is an example of how to do that.

+0

ハッター:ありがとう - それはうまくいくはずです。 OnPropertyChangedを介してTVIのVMの変更をバブリングし、VMでTreeViewを処理します。 – Number8

関連する問題