0

当在视图中引发 EventTrigger 时,我想调用 ViewModel 的方法。我想做类似的事情,但是在我的 xaml 代码中的MVVM中:

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 构建的,我不能使用 Blend SKD。

4

2 回答 2

0

创建一个 DependencyProperty 类型ICommand,例如将其称为“BeginWorkCommand”。在您的视图模型旁边创建一个新类,或使用DelegateCommand直接在您的视图模型中使用它。最后将此视图模型命令绑定到您创建的依赖项属性。

于 2012-09-12T13:41:28.607 回答
0

在此处使用GalaSofts EventToCommandMVVM Light Toolkit

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

LoadedCommand 是在您的 ViewModel 中实现的命令

public class MyViewModel
{
    private readonly ICommand loadedCommand;

    public ICommand LoadedCommand { get { return loadedCommand; } }

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

    //...
}

RelayCommand 也是工具包的一部分。

于 2012-09-12T13:42:09.807 回答