2010-07-01 65 views
2

我有一個窗口,並使用MVVM光工具包綁定到Loaded事件:MVVM光工具包沒有發射窗口已加載事件

<Window 
     ... 
     xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4" 
     xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     ... 
     > 

     <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Loaded"> 
      <cmd:EventToCommand Command="{Binding Loaded, Mode=OneWay}" /> 
     </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </Window> 

,並在我的視圖模型,我有以下幾點:

private ICommand _loaded; 
public ICommand Loaded 
{ 
    get 
    { 
    if (_loaded == null) 
    { 
     _loaded = CreateAsyncRelayCommand(p => OnLoaded()); 
    } 
    return _loaded; 
    } 
} 

public void OnLoaded() 
{ 
    throw new NotImplementedException(); 
} 

但在窗口顯示,雖然ICommand變量正在初始化,當我在Loaded屬性中放置一個斷點時,不會拋出異常。我試圖改變使用初始化事件,但仍然是同樣的事情。這在我在同一個應用程序中的另一個窗口中工作正常,所以我幾乎可以肯定我正在做的一切都正確 - 可以有我失蹤的東西?當我使用代碼隱藏進行綁定時,它工作正常,但我想遵守mvvm模式。 在此先感謝。

+0

你可以發佈您使用的是CreateAsyncRelayCommand的代碼?我用一個標準的RelayCommand試了一下,它按預期工作。 – 2010-07-03 05:16:31

回答

0

嘗試分配您的構造函數中的命令,即

public ViewModel() { 
    _loaded = CreateAsyncRelayCommand(p => OnLoaded()); 
}