2012-02-10 9 views
2

誰もが、私はWPFでMVVMLightアプリケーションで作業していますが、私の問題は、ユーザーがページをロードできるとLoadedイベントを発生させたいということです。例えば、私はいくつかのナビゲーションページを持っているので、ユーザが任意のページをクリックするたびに、PageLoadedイベントが発生するはずです。しかし私の場合、それは同じ方法で解雇されません。私は完全に正常に動作している別のページがあります。私はどこでミスをしているのか分かりません。MVVMLightのインタラクティブ機能に関する問題

私のXAMLコードは次のようになります。

xmlns:vm="clr-namespace:Test.User.Facebook.ViewModel" 
<UserControl.Resources> 
    <ResourceDictionary> 
     <vm:ViewModelLocator x:Key="Locator"/> 
    </ResourceDictionary> 
</UserControl.Resources> 


<UserControl.DataContext> 
    <Binding Source="{StaticResource Locator}" Path="FriendsList"/> 
</UserControl.DataContext> 


<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Loaded"> 
     <cmd:EventToCommand Command="{Binding LoadedCommand}" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

そしてViewModelには、次のようになります

public RelayCommand LoadedCommand { get; private set; } 
public FriendsListViewModel() 
{ 
    LoadedCommand = new RelayCommand(() => UserControlLoaded()); 
} 

private void UserControlLoaded() 
{ 
    GetFriendsList(); 
} 

私は、このページに移動するときこれがロードされていません。イベントは発生しません。誰かが私を助けることができますか?

おかげで...私の知る限りは、相互作用が見つめている前にロードされたイベントが発生する知っているよう

+0

'EventToCommand'はViewModelにバインドされていますか?たぶんあなたは別の 'DataContext'で作業しているかもしれません。 'DataContext'を明示的に設定してみてください。私は上記のアプローチを用いて試験した – alf

+0

<バインディングソース= "{StaticResourceロケータ}" パス= "FacebookMainMenu" />

+0

... –

答えて

0

。そのため、EventToCommandを使用してロードイベントを処理することはできません。この場合、私は通常DataContextからコマンドを取得するイベントハンドラを作成します。コマンドのCanExecuteメソッドが評価され、trueを返した場合はExecuteメソッドが呼び出されます。

このパターンは、MVVMパターンと矛盾しないため、EventToCommandを使用できない場合のきれいな方法です。しかし、欠点の1つは、CanExecuteステータスがenabledプロパティautomaticallにバインドされていないことです。しかし、このパターンを使用しなければならない希少な場面では、通常はビジュアルを持たないインタラクションがないときと同じように、これは問題ではありません。

+0

おかげ@Obalixが、これはでは不可能です私たちの場合...!しかし、再び良いアイデアを与えてくれてありがとう! –

+0

@Jitendra_Jadav:どうしてできないのですか?私が言ったように、イベントをEventToCommandメカニズムで処理することができない場合(これもoherイベントがある)、ケースを巡回する一般的な方法です。 MVVMパターンは、VMコードとビューを分離しており、コードはビューにのみ関連しているため、MVVMパターンを制動しません。 Sはあなたの制約を分かち合い、コミュニットは正解を見つけるチャンスを与えます。 – AxelEckenberger

+0

@Jitendra_Jadav:...サンプルが必要ですか? – AxelEckenberger

関連する問題