2012-09-12 35 views
0

我想在View中引發EventTrigger時調用ViewModel的方法。 我想要做這樣的事情,但在MVVM在我的XAML代碼:當在視圖中引發EventTrigger時,在ViewModel中調用方法

public partial class MyView : UserControl 
{ 
    public MyView() 
    { 
     InitializeComponent(); 
     this.Loaded +=new System.Windows.RoutedEventHandler(ViewLoaded); 
    } 

    private void ViewLoaded(object sender, RoutedEventArgs e) 
    { 
     ((MyViewModel)this.DataContext).BeginWork(); 
    } 
} 

我的應用程序是建立與WPF 3.5,我不能使用混合SKD。

回答

0

創建類型爲ICommand的DependencyProperty,例如將其稱爲「BeginWorkCommand」。在viewmodel旁邊創建一個新類,或者使用DelegateCommand直接在視圖模型中使用它。最後將此viewmodel命令綁定到您創建的依賴項屬性。

0

使用GalaSoftsEventToCommand從MVVM光工具包here

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

凡LoadedCommand是在你的視圖模型

public class MyViewModel 
{ 
    private readonly ICommand loadedCommand; 

    public ICommand LoadedCommand { get { return loadedCommand; } } 

    public MyViewModel() 
    { 
     loadedCommand = new RelayCommand(myLoadedHandler); 
    } 

    //... 
} 

RelayCommand實施的命令是工具包的一部分了。

相關問題