0

View で 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 EventToCommandのMVVM 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 に答える